Überprüfung, ob ein Benutzer auf Discourse eingeloggt ist, von einer anderen Website

Hallo Leute,

Ich möchte den Zugriff auf bestimmte Seiten unserer Website einschränken, je nachdem, ob jemand ein Mitgliedskonto in unserem privaten Discourse hat. Vermutlich würde ich auf diesen Seiten überprüfen, ob der Benutzer zu diesem Zeitpunkt in Discourse angemeldet ist.

Ich denke, das richtige Werkzeug dafür ist: GitHub - discourse/discourse-auth-proxy: Ein http-Proxy, der das DiscourseConnect-Protokoll zur Authentifizierung von Benutzern verwendet

Gibt es eine Schritt-für-Schritt-Dokumentation zur Verwendung?

Kann ich das auf demselben DigitalOcean-Droplet wie unsere Discourse-Site installieren, oder muss ich es woanders hosten?

Könnten Sie mir bitte bei der Verwendung des Discourse Auth Proxy helfen?

Ich habe Discourse auf einem Digital Ocean Droplet und eine PHP-Website auf einem separaten Server.

Das können Sie mit DiscourseConnect tun (wobei Discourse als Authentifizierungsanbieter fungiert): Use Discourse as an identity provider (SSO, DiscourseConnect).

Ich habe es noch nicht ausprobiert, aber der Parameter prompt könnte für Ihren Fall nützlich sein:

  • prompt: Wenn prompt=none, wird die SSO-Anfrage als „nur prüfen“-Anfrage behandelt. Wenn der Browser/das Gerät bereits bei Discourse angemeldet ist, gibt Discourse wie gewohnt eine erfolgreiche SSO-Antwort mit Benutzerauthentifizierungsinformationen zurück. Wenn der Browser/das Gerät nicht bereits angemeldet ist, fordert Discourse den Benutzer nicht zur Anmeldung auf und gibt stattdessen sofort eine SSO-Antwort mit dem Parameter failed=true anstelle von Benutzerinformationen zurück. Dies bietet einen Mechanismus, um abzufragen, ob der Benutzer angemeldet ist, ohne den Benutzer jemals zu einem Anmeldedialog weiterzuleiten, wenn er nicht angemeldet ist.
1 „Gefällt mir“

Das sieht vielversprechend aus, @simon. Mir war nicht bewusst, dass DiscourseConnect überhaupt funktionieren kann, ohne enable discourse connect zu aktivieren, aber anscheinend kann es das! :thinking:

Ich werde einige Tests durchführen und berichten – danke, dass du mich auf diese Spur gebracht hast!

1 „Gefällt mir“

Ich frage mich, ob die Verwendung von Discourse als Authentifizierungsanbieter aufgrund seines Namens (DiscourseConnect) übersehen wird. Wenn Sie beispielsweise nur den Begriff DiscourseConnect in einen Beitrag hier einfügen, wird ein Link zum Thema erstellt, in dem es darum geht, eine externe Website als Authentifizierungsanbieter für Discourse zu verwenden. Die Verwendung von Discourse als Authentifizierungsanbieter ist eine meiner Hauptbegründungen für die Einrichtung einer Discourse-Website.

Falls es hilft: Das WordPress-Plugin ermöglicht es Discourse, als Authentifizierungsanbieter zu fungieren. Der relevante Code befindet sich hier: wp-discourse/lib/sso-client at main · discourse/wp-discourse · GitHub. Der Code ist möglicherweise etwas überkompliziert.

Hier ist eine einfachere Implementierung für eine Remix/React-App: discourse_remix_comments/app/routes/login.tsx at main · scossar/discourse_remix_comments · GitHub. Wenn man die TypeScript-Sachen ignoriert, ist nicht viel daran.

3 „Gefällt mir“

@simon Ich wollte mich nur noch einmal melden und dir danken. Ich denke, dein früherer Vorschlag ist die richtige Antwort. Ich hatte Schwierigkeiten, ihn auf meiner Website zu implementieren, aber das Problem scheint hauptsächlich darin zu liegen, dass es sich um ein halb-kundenspezifisches CMS mit viel wackeligen Code handelt, der im Weg ist.

1 „Gefällt mir“

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