Avec le développement continu des API, de plus en plus d'applications Web doivent utiliser des jetons Web JSON (JWT) pour mettre en œuvre l'authentification et l'autorisation des utilisateurs. En tant que framework privilégié pour le développement d'API, Laravel prend également en charge JWT. Cet article explique comment utiliser JWT dans Laravel.
Qu'est-ce que JWT ?
JSON Web Token (JWT) est un standard ouvert (RFC 7519) permettant de transmettre en toute sécurité des revendications en tant qu'objets JSON entre les parties. JWT peut être utilisé pour l’autorisation, l’authentification et l’échange d’informations. JWT est généralement transmis sous forme de jeton Bearer dans l'en-tête Authorization de la requête HTTP.
La structure de JWT se compose de trois parties : en-tête, charge utile et signature. L'en-tête et la charge utile sont tous deux des objets JSON, et la signature est le résultat chiffré de la combinaison de ces deux parties. La structure de JWT étant très simple, elle peut être facilement analysée et vérifiée.
Comment utiliser JWT dans Laravel ?
L'utilisation de JWT nécessite l'installation des bibliothèques dépendantes suivantes dans le projet Laravel : tymondesigns/jwt-auth. Dans Laravel 5.7 et supérieur, vous pouvez utiliser la commande suivante pour installer cette bibliothèque dépendante :
composer require tymon/jwt-auth
Une fois l'installation terminée, vous devez ajouter le fournisseur de services et l'alias suivants dans le fichier config/app.php :
'providers' => [ // Other Service Providers TymonJWTAuthProvidersLaravelServiceProvider::class, ], 'aliases' => [ // Other Aliases 'JWTAuth' => TymonJWTAuthFacadesJWTAuth::class, 'JWTFactory' => TymonJWTAuthFacadesJWTFactory::class, ],
Suivant , vous devez générer la clé JWT. La clé peut être générée à l'aide de la commande suivante :
php artisan jwt:secret
Cette commande générera une clé aléatoire et l'ajoutera au fichier config/jwt.php. Il est important de protéger cette clé et de ne la divulguer à personne.
Après avoir généré la clé, vous pouvez commencer à utiliser JWT dans Laravel. JWT peut être utilisé pour l'authentification et l'autorisation.
Authentification à l'aide de JWT
Le processus d'authentification à l'aide de JWT dans Laravel est le suivant :
Le code pour générer le JWT et le renvoyer à l'utilisateur est le suivant :
public function login(Request $request) { $credentials = $request->only('email', 'password'); if (!$token = JWTAuth::attempt($credentials)) { return response()->json(['error' => 'Unauthorized'], 401); } return response()->json(['token' => $token]); }
Le code pour vérifier le JWT et extraire les informations de l'utilisateur est le suivant :
public function profile(Request $request) { $user = JWTAuth::parseToken()->authenticate(); return response()->json(['user' => $user]); }
Utiliser JWT pour l'autorisation
Le processus d'utilisation JWT pour l'autorisation dans Laravel est le suivant :
Le code pour vérifier le JWT et vérifier le rôle ou les autorisations de l'utilisateur est le suivant :
public function index(Request $request) { $user = JWTAuth::parseToken()->authenticate(); if ($user->hasRole('admin')) { $items = Item::all(); } else { $items = Item::where('user_id', '=', $user->id)->get(); } return response()->json(['items' => $items]); }
Il convient de noter que la méthode hasRole() ici est une méthode personnalisée et doit être implémentée dans le modèle User.
Résumé
Cet article présente le processus d'utilisation de JWT pour l'authentification et l'autorisation dans Laravel. JWT fournit un mécanisme d'authentification utilisateur sécurisé, simple et évolutif qui protège les applications contre diverses attaques. Si vous développez une application Web nécessitant une API, utiliser JWT est un bon choix.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!