2016-07-27 12 views
1

Hier ein Beispiel für eine normale Web-App.Wie verlängern Sie die Token-Ablaufzeit, wenn der Benutzer für eine bestimmte Zeit mit JWT nicht aktiv ist?

Traditionell verwenden wir Sitzung und setzen Timeout = 30 Minuten. Wenn die Sitzung abläuft, leiten wir den Benutzer zur Anmeldung weiter. (Die abgelaufene Zeit wird verlängert, wenn Benutzer/Browser mit der Web-App interagieren)

Mit JWT, wie erreicht man das?

Ich weiß etwas über "Token Refresh", wenn Kurzzeit-Token abläuft wird es eine neue mit Refresh-Token aktualisieren.

Aber es sieht so aus, als wäre es egal, ob der Benutzer mit der Web App interagiert oder nicht. Solange das Refresh-Token aktiv ist, kann der Browser immer ein neues kurzlebiges JWT erhalten.

Also die Frage ist: Wie Token auslaufende Zeit zu verlängern, wenn Benutzer für einen festgelegten Zeitraum nicht aktiv ist mit JWT?

Antwort

1

Wenn der Benutzer aktiv ist, geben Sie dann ein neues JWT jedes Mal, wenn der Benutzer in der Web-Anwendung und jeden Zeitraum eingeben (zum Beispiel 1 Stunde)

Wenn der Benutzer nicht aktiv ist, aber der Browser geöffnet ist , kann es einen neuen JWT zum Server im Hintergrund anfordern. Das Token muss vor der Ablaufzeit angefordert werden und dann das Token in localStorage oder cookie ersetzen. Diese Methode kann auch auf Standalone-Anwendungen angewendet werden.

Wenn der Browser kein neues Token anfordern kann (geschlossen, nicht aktiv, usw.), verfällt das Token und Sie können den Benutzer auf die Art und Weise umleiten, wenn die Serversitzung abläuft

prüft dieses JWT (JSON Web Token) automatic prolongation of expiration

1

Wenn der Benutzer mit dem Server interagiert, dann kann den Server eines anderen JWT mit einer neuen Ablaufzeit zur Ausgabe entscheiden (nicht bei jeder Anfrage aber zB 5 min vor der aktuellen Ablaufzeit JWT). Wenn der Client eine neue JWT erhält, ersetzt er die alte.

Wenn der Benutzer nichts unternimmt, wird keine neue JWT ausgegeben und die JWT wird nach der Zeitüberschreitung ungültig.