Mettre à jour le jeton tymon/jwt-auth dans l'API Laravel
P粉798010441
P粉798010441 2023-08-14 14:35:54
0
2
570
<p>J'ai une API Laravel et j'ai installé <code>tymon/jwt-auth</code>. Pour connecter l'utilisateur et obtenir le jeton, j'utilise le code suivant : </p> <pre class="brush:php;toolbar:false;">if (! $token = auth()->attempt($request->only('email', 'password'), true)) { lancer ValidationException::withMessages([ 'email' => 'Identifiants invalides', ]); } renvoyer un nouveau TokenResource ([ 'jeton' => $jeton, 'utilisateur' => $utilisateur, ]); ≪/pré> <p>J'ai également un point de terminaison pour <code>refresh token</code> qui est censé invalider l'ancien jeton et en émettre un nouveau. D'après la documentation, j'ai ajouté le code suivant : </p> <pre class="brush:php;toolbar:false;">retourner un nouveau TokenResource([ 'jeton' => auth()->refresh(), 'utilisateur' => auth()->utilisateur(), ]); ≪/pré> <p>Le problème est que lorsque j'accède au point de terminaison avec le jeton actuel, il renvoie un nouveau jeton, mais l'ancien est toujours valide. </p> <p>Existe-t-il un moyen d'invalider le jeton d'actualisation ? </p>
P粉798010441
P粉798010441

répondre à tous(2)
P粉557957970

C'est le comportement par défaut. Ainsi, pour obtenir les résultats souhaités, vous pouvez les mettre sur liste noire. Lorsqu'un utilisateur tente d'utiliser un token, vous pouvez vérifier s'il figure dans la liste noire. Si tel est le cas, vous pouvez le refuser.

Vous pouvez y parvenir en créant un middleware qui vérifie si le jeton est dans la liste noire et appliquez ce middleware aux routes qui nécessitent une validation du jeton.

Middleware :

public function handle($request, Closure $next)
{
    $token = $request->bearerToken();
    
    if (TokenBlacklist::where('token', $token)->exists()) {
        return response()->json(['message' => '令牌已失效'], 401);
    }

    return $next($request);
}

Cependant, vous ne devez le faire que si votre système l'exige réellement.

P粉768045522

Vous ne pouvez pas expirer manuellement un jeton après sa création. C'est ainsi que fonctionnent les jetons. Si vous créez un jeton, il sera valide jusqu'à son expiration, mais vous pouvez créer une liste noire de jetons et chaque fois que vous actualisez le jeton, ajoutez le premier jeton à la liste noire, envisagez également de réduire la durée de vie du jeton (si elle est suffisamment basse), vous peut compter sur un mécanisme d’expiration automatique.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal