2016-08-22 4 views
1

Ich mache eine Anwendung, in der ich JWT zum Verwalten von Sitzungen verwenden. Wenn sich ein neuer Benutzer anmeldet, stelle ich dem Benutzer ein JWT-Token zur Verfügung und speichere es in meiner Datenbank sowie im Browser des Benutzers. Wenn der Benutzer sich abmeldet, lösche ich das Token aus dem Browser und meiner Datenbank.Verwalten von Benutzersitzungen für mehrere Geräte Knoten js mit JWT

Aber ich möchte, dass, wenn Benutzer von mehreren Geräten angemeldet ist, dann wird es sich von einem Gerät abmelden, es wird auch nicht von anderen Geräten abgemeldet. Wie erreiche ich das?

+0

Mögliches Duplikat von [JSON-Web-Token ungültig machen] (http://stackoverflow.com/questions/21978658/invalidating-json-web-tokens) – DrakaSAN

Antwort

0

Zuerst soll sich JWT nicht "ausloggen" können, sondern automatisch ablaufen, deshalb soll man expiresIn mal kurz setzen.
Weil mit JWT Sitzungen vom Client bearbeitet werden, ist es nicht die Verantwortung des Servers, sich auszuloggen, sondern der Benutzer, der das JWT einfach wegwirft.

In Ihrem Fall, nehme ich an, Sie überprüfen, ob der JWT in Ihrer Datenbank vorhanden ist, bevor Sie dem Benutzer erlauben, und als solche müssen Sie nur die anderen JWT suchen und löschen, die diesem Konto zugeordnet sind.
Aber wenn Sie Dinge sauber machen wollen, umarmen Sie JWT-Logik: Legen Sie nur kurze Lebensdauer fest, und warten Sie, bis sie ablaufen.

+0

also sollte ich Token in meiner Datenbank speichern oder nicht? –

+0

Vorzugsweise sollten Sie nicht, aber wenn Sie aus irgendeinem Grund bevorzugen, sie zu speichern, habe ich Ihnen eine Möglichkeit bereitgestellt, die anderen Geräte abzumelden. – DrakaSAN

+0

Mit JWT wird die Sitzung in der JWT gespeichert. JWT eignet sich nicht gut, wenn Sie die Sitzungsdaten häufig ändern müssen, da sie eher für die REST-API geeignet sind. – DrakaSAN

Verwandte Themen