2016-07-28 8 views
0

Ich schreibe eine Anwendung in Laravel5, die mit einer API kommuniziert, wie kann ich mit der API authentifiziert werden, auch nachdem mein JWT Token abgelaufen ist. Die Anmeldeinformationen werden in der Umgebungsdatei gespeichert. Das erste Mal logge ich mich ein und speichere das Token in der Sitzung. Dann habe ich ein Token, sondern kann es ablaufen und gibt eine 401 mit der NachrichtWie authentifiziere ich mit einer API unter Verwendung von JWT

{ 
    "message": "Token expired" 
} 

Wie kann ich dies erkennen, ohne den Benutzer zu bemerken, dass die Anwendung erneut authentifizieren hatte, kann ich Middleware für diese die fangen 401 mit der Nachricht Token abgelaufen und dann erneut authentifizieren und ein neues Token speichern?

Der Ablauf ist wie folgt.

User requests url on my application 
-> 
My application asks for data from the API 
-> 
Checks the Token in my storage with that one in the API 
-> 
Returns 401 with message Token expired 
-> 
Requests a new Token 
-> 
Returns data from API to user. 

Ich habe diese alle und meine Benutzer zu tun, sollte es nicht merken, und ich will nicht auf die api auf jede Anfrage authentifizieren. Aber ich habe keine Ahnung, wo ich anfangen soll.

Antwort

1

Gute Frage.

Dies kann über Refresh Tokens erreicht werden, wenn Sie die Laravel JWT Paket verwenden gefunden:

Here

Sie können realtively leicht Refresh-Token verwenden.

protected $routeMiddleware = [ 
    'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken', 
]; 

Während Schritt: Sie können eine Middleware wie hinzufügen

Checks the Token in my storage with that one in the API 

Wenn das Token abgelaufen ist, aber die Refresh-Zeit noch gültig ist, erhalten Sie das Aktualisierungs-Token im Header zurückgegeben werden, vorausgesetzt, Die Route, die Sie treffen, befindet sich in der JWT.refresh-Middleware.

Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

Voll docs hier:

Docs

Verwandte Themen