So löschen Sie Benutzerkonten über die API, ohne die IP-Adresse zu blockieren

Wir haben Discourse mit einer anderen Anwendung integriert, und die Benutzer werden in Keycloak verwaltet. Wenn ein Benutzer sein Konto in der anderen Anwendung löscht, löschen wir es auch per API in Discourse.
Funktioniert gut, aber die IP des Benutzers wird dann in Discourse automatisch blockiert, sodass es keine Möglichkeit gibt, sich von derselben IP als anderer Benutzer anzumelden.
Kann diese IP-Sperrung ausgeschaltet werden? Oder wird sie automatisch nach einiger Zeit aufgehoben?

Ja. Sie müssen das Element, das die IP blockiert, erneut überprüfen. Sehen Sie sich Reverse engineer the Discourse API an und sehen Sie, was passiert, wenn Sie es über die Benutzeroberfläche tun.

Gemäß der API-Dokumentation zum Löschen eines Benutzers ist die Blockierung der IP-Adresse eine der Optionen, die im Body der Anfrage übergeben werden.

Daher sollten Sie im Code, in dem die Anfrage gestellt wird, im Body der Anfrage JSON mit ”block_ip”: false angeben können.

Zum Beispiel:

{
  delete_posts: false,
  block_email: false,
  block_urls: false,
  block_ip: false,
}
3 „Gefällt mir“

Ich bin mir nicht sicher, ob ich das verstehe.
Bedeutet das, dass ich die IP über die API entsperren muss, nachdem das Konto gelöscht wurde?
Ich hatte eigentlich auf eine Konfigurationsschalter in Discourse gehofft.

Ah, verstanden. Danke, ich werde das versuchen.

2 „Gefällt mir“

Hallo
Hast du hier deine Antwort bekommen? Denn „block_ip“: false funktioniert in meinem Fall nicht im API-Anforderungskörper. Hat es bei dir funktioniert oder hast du durch Reverse-Engineering der Discourse-API eine andere separate Anfrage gesendet?

Es funktioniert für mich.
Das ist unser Request Body:

{
  delete_posts: false,
  block_email: false,
  block_urls: false,
  block_ip: false,
}
2 „Gefällt mir“

Ich frage mich, ob das Problem darin bestand, \"block_ip\": false genau für den Request Body zu verwenden, im Gegensatz zu einem JSON-Objekt-String. Ich kann meinen Beitrag nicht mehr bearbeiten, aber ich habe ihn markiert, damit Ihr JSON als Beispiel hinzugefügt wird, um hoffentlich die markierte Lösung klarer zu machen.

Danke für Ihre Antwort.
Wir haben dies für den Anforderungs-JSON-Body {block_email: false} (in unserer Situation ist es block_email) implementiert, aber es scheint in der API zur Benutzerlöschung keine Wirkung zu zeigen. Wir mussten eine separate Anfrage senden, um die E-Mail aus den gefilterten E-Mails (blockierte E-Mails) zu entfernen.

Je nachdem, wie Sie Ihren JSON-String (manuell oder mit einer Bibliothek) konstruieren, müssen Sie möglicherweise einfache Anführungszeichen, doppelte Anführungszeichen oder keine Anführungszeichen verwenden. Abgesehen davon habe ich keine Ahnung – die Discourse-API tut in der Regel genau das, was sie verspricht.

1 „Gefällt mir“

Okay, ich werde es hier posten, für jeden, der auf die gleiche Situation mit der Benutzerdatenlösch-API stößt.
block_ip: False verhindert zuverlässig, dass die IP zu den gefilterten IPs hinzugefügt wird.
block_email: False sollte verhindern, dass die E-Mail zu den gefilterten E-Mails hinzugefügt wird, jedoch können einige Randfälle (wie spam-flagged Nutzer oder TL0-Neunutzer) trotzdem eine E-Mail-Filterung auslösen auch wenn block_email auf False gesetzt ist.
Dies erfordert eine zusätzliche Anfrage, um die E-Mail aus Screened Emails zu entfernen.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.