Logout-Problem mit Laravel JWT-Authentifizierung

8

Ich benutze jwt-auth , um eine RESTful-Auth-Ressource in meiner API zu erstellen. Wenn eine Client-App die Anmeldungsressource aufruft, wird der Fallbenutzer protokolliert, Ihr aktuelles Token muss ungültig gemacht werden, und so wird ein neues Token generiert.

Aber wenn das aktuelle Token auf der schwarzen Liste steht, wird ein TokenBlacklistedException geworfen.

Wie kann ich überprüfen, ob ein Token auf der Blacklist steht? Oder wie man einen Benutzer "Abmelden" korrekt implementiert? Ich versuche, auf jwt-auth API-Quelle zu finden, aber nicht existiert ein getToken()->isBlacklisted() oder parseToken()->isBlacklisted() oder ein Validator, um es zu implementieren.

Ever-Token ist ungültig parseToken () löst eine TokenBlacklistedException aus, daher ist eine isBlacklisted-Methode eine gute Methode, um zu überprüfen, ob das Token gültig ist, bevor ein Token ungültig wird.

INFO:

Der folgende Code überprüft, ob Payload ungültig ist, und wirft das TokenBlacklistedException wenn ungültig:

%Vor%

So verifizieren Sie:

%Vor%     
Maykonn 14.04.2015, 15:24
quelle

2 Antworten

9

Sie können die Sitzung auf der Clientseite einfach zerstören, wenn sie sich abmelden und das Token im Backend ungültig machen. Sie sollten die Blacklist nicht verwenden müssen.

Das Token auf der Client-Seite technisch zu zerstören ist ausreichend, aber für Session-Hijacking ist es auch eine gute Idee, es auf dem Backend zu entwerten.

Wenn du ungültig machst, musst du das Token zerstören, nachdem du deine Antwort von Laravel erhalten hast.

%Vor%

Dann auf der schrägen Seite

%Vor%

Eine Möglichkeit, JWT-Exceptions zu behandeln, ist die Einrichtung von EventServiceProvider in Laravel, hier ist meine Ansicht:

%Vor%

Sie werden das in Ihrer app.php registrieren.

Dann implementiere ich die JWTEvents-Klasse mit Methoden für jedes Ereignis.

%Vor%

Wichtig ist, dass wir die JWT-Ausnahmen abfangen und eine json-Antwort mit einem bestimmten Statuscode zurückgeben.

Auf der eckigen Seite, habe ich in meiner httpInterceptor-Klasse, fängt für diese http Statuscodes.

%Vor%     
Matthew Brown 14.04.2015, 15:29
quelle
1

Soweit ich verstehe, ist eine Sache, die niemand hervorhebt, die "jwt.refresh" (aka RefreshTokenMiddleware), die zum Aktualisieren des Tokens verwendet wird.

Wenn nun jemand, der eine Abmeldeaktion durchführen möchte, die Controller-Methode in eine Route wie

umschließt %Vor%

wird sicher ein neues Token in der Abmeldeantwort erhalten, so dass der Client neue Anfragen ausführen kann.

Ich hoffe, dies kann zur Klärung dieses Problems beitragen.

    
madone 26.08.2015 09:31
quelle