Mettre à jour le jeton tymon/jwt-auth dans l'API Laravel
P粉798010441
2023-08-14 14:35:54
<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>
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 :
Cependant, vous ne devez le faire que si votre système l'exige réellement.
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.