Hier ist, was Struktur wieausloggen eine stateless app
aussehen mein Projekt ist- UI: AngularJS App
- Backend: Java + MongoDB staatenlos app
Die UI authentifiziert einen bestimmten Benutzer und die REST API antwortet mit einem JWT-Token. Für jede weitere Anfrage erwartet die REST API Token im Header und wenn sie nicht da ist, gibt sie Unautorized
Fehler zurück.
Nun, was ist der beste Weg zur Implementierung logoff
Funktion? Eine Sache ist klar, dass ich das Token aus dem UI-Cookie löschen werde. Aber ich muss dem Server mitteilen, dass sich der Benutzer ausgeloggt hat.
Ich dachte, eine In-Memory-DB zu halten, um zu verfolgen, wer sich angemeldet hat und den Benutzer aus dem Speicher zu entfernen, sobald er ausgeloggt ist, aber es würde die App eine Art von Stateful (ich denke). Außerdem könnte es schwierig werden, die App zu skalieren, da ich die In-Memory-Benutzer über alle Knoten hinweg replizieren müsste.
Für jeden REST-Aufruf hole ich die Benutzerdetails aus MongoDB. Wäre es sinnvoll, mit der DB den eingeloggten Status zu speichern? Ich denke nur laut nach. Da ich nicht weiß, in welche Richtung ich gehen soll.
* "Aber ich muss dem Server mitteilen, dass sich der Benutzer abgemeldet hat." * Warum? Wie auch immer, machen Sie einfach einen Logout-Endpunkt, der das Token aus dem Backend löscht. –
* Warum * Damit der Server weiß, dass jede nachfolgende Anfrage Anmeldeinformationen benötigt. Wie ich bereits erwähnt habe, wenn ich dies nicht tue und der Token von jemandem gestohlen wurde, kann er weiterhin die Anfrage senden, obwohl der Client abgemeldet wurde. * Einen Abmelde-Endpunkt zu machen * würde die Bedenken aufwerfen, die ich in meinem vorletzten Punkt, d. H. Skalierbarkeit, erwähnt habe. –
Ich glaube nicht, dass es einen Leistungsunterschied zwischen dem Speichern eines eingeloggten Status in Ihrer DB und dem Löschen des ungültigen Tokens von Ihrem DB –