Automatische Anmeldung auf der Discourse-Website

Was möchten Sie erreicht haben?

Ich habe eine mobile Anwendung. Discourse dient mir als Authentifizierungsquelle. Um sich in der mobilen App anzumelden, muss der Benutzer seinen Benutzernamen und sein Passwort eingeben. Anschließend führe ich einen Login-API-Aufruf an Discourse durch, um den Benutzer zu authentifizieren.

In der mobilen App gibt es nun einige Links zum Discourse-Forum. Ich möchte, dass sich der Benutzer automatisch im Forum anmeldet, wenn er auf diese Links klickt. Es ist ein sehr schlechtes Nutzererlebnis, wenn Benutzer ihre Passwörter zweimal eingeben müssen: einmal für die Anmeldung in der App und ein zweites Mal für die Anmeldung im Forum.

Da eine passwortlose Anmeldung über einen Link, der per E-Mail an den Benutzer gesendet wird, möglich ist, sollte dieses Verfahren meiner Meinung nach ebenfalls machbar sein. Vielleicht mit einem einfachen Plugin.

Wann benötigen Sie die Umsetzung?
1 Woche.

Wie hoch ist Ihr Budget in USD für diese Aufgabe?
300 $

2 „Gefällt mir“

Ist das nicht möglich? Oder ist das Angebot zu niedrig? :thinking:

Hey :slight_smile:

Das ist tatsächlich etwas komplexer, als es auf den ersten Blick scheint.

Die Funktionsweise der Anmeldung per E-Mail ist folgende: Wenn du im Anmelde-Modal auf die Schaltfläche „Mit E-Mail“ klickst, wird ein Token generiert, das spezifisch für diesen Benutzer ist und in email_tokens gespeichert wird. Dieses Token findest du im Link (die Zeichenkette aus Zahlen und Buchstaben):

http://localhost:3000/session/email-login/69c4953ff0726b5f4c2b26c1e3563b79

Du müsstest dieses Token für die Links in deiner App jedes Mal generieren, wenn sich der Benutzer in deiner App anmeldet. Ich glaube nicht (?), dass diese Funktionalität derzeit über die API verfügbar ist, sodass du zunächst einen Endpunkt einrichten müsstest.

Dieser Endpunkt müsste durch eine Authentifizierung geschützt sein. Du bräuchtest eine Möglichkeit, dies in deiner App zu handhaben. Hast du das vielleicht schon?

Dann müsstest du Aspekte wie das Ablaufdatum des Tokens berücksichtigen. Wie lange sollte das Token gültig sein? Wie holst du dir ein neues und aktualisierst die Links, sobald es abgelaufen ist?

Es fühlt sich so an, als gäbe es einen besseren Weg, dieses Problem zu lösen, als diese Funktion nachträglich einzubauen.

Ja, ich habe genau darüber nachgedacht. Da die Anmeldung per E-Mail bereits implementiert ist, sollte das auch möglich sein. Ich weiß nicht, wie die eigentliche Umsetzung aussieht. Vielleicht sollte das über ein Plugin gelöst werden. Falls du das umsetzen kannst, lass es mich bitte wissen.

Ja, die Authentifizierung erfolgt über die Discourse-Login-API. Das ist kein Problem.

Hat der Link zur Anmeldung per E-Mail einen Ablaufwert? Wir könnten dasselbe oder etwas Ähnliches verwenden.
Andere Dinge wie das Abrufen eines neuen Tokens werden von der App selbst erledigt.

Ja, die Ablaufzeit von E-Mail-Tokens wird durch die Site-Einstellung „Gültigkeitsdauer von E-Mail-Tokens in Stunden

Das würde für mich funktionieren.

Und da ich den Benutzer auch zu einem bestimmten Thema weiterleiten möchte, wäre es perfekt, wenn die Themen-ID oder ein Link hinzugefügt werden könnte, sodass der Benutzer nach dem Login dorthin weitergeleitet wird.

Wäre ein anderer Ansatz, dass die Links in der App auf dein eigenes Backend zeigen. Wenn du darauf klickst, wird in diesem Moment ein entsprechender Link erstellt und der Client wird auf irgendeine Weise umgeleitet, um zum richtigen Ort zu gelangen.
Das würde bedeuten, dass du keine Authentifizierungslinks generieren musst, bevor ein Benutzer auf sie klickt.

1 „Gefällt mir“

Ja, das ist wahrscheinlich effizienter auf der App-Seite. Ich denke, der Endpunkt in Discourse wäre aber trotzdem derselbe.

1 „Gefällt mir“

Wie stellen wir auf diese Weise sicher, dass der Benutzer authentifiziert ist?

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