web-dev-qa-db-de.com

Wie kann ich alle Tokens für einen Benutzer im laravel Pass ungültig machen?

In unserer App wird das Zugriffstoken für dieses bestimmte Gerät auf diese Weise ungültig, wenn sich der Benutzer abmeldet.

$user = $request->user();

$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
$token = $user->tokens->find($id);
$token->revoke();

Wenn ein Benutzer sein Konto deaktiviert, möchten wir alle Zugriffstoken von allen Geräten, auf denen der Benutzer angemeldet ist, ungültig machen. Ich habe das Dokument durchgesehen, aber nichts Nützliches gefunden. Vielen Dank

18
Sayantan Das

Schauen Sie sich das Merkmal HasApiTokens an, das der Pass bietet. Die Dokumentation empfiehlt, dieses Merkmal Ihrem Benutzermodell hinzuzufügen. Eine der Methoden, die es zur Verfügung stellt, ist tokens(), die eine hasMany Beziehung zwischen Laravel\Passport\Token Und Modellen unter Verwendung des Merkmals definiert. Sie können dies verwenden, um eine Liste aller Token für einen bestimmten Benutzer abzurufen:

$userTokens = $userInstance->tokens;

Das Token-Modell selbst hat eine revoke -Methode:

foreach($userTokens as $token) {
    $token->revoke();   
}
34
Jeff Lambert