Maison >cadre php >Laravel >Comment utiliser JWT dans Laravel

Comment utiliser JWT dans Laravel

王林
王林original
2023-05-21 10:40:071989parcourir

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 :

  1. L'utilisateur soumet ses informations d'identification (par exemple, nom d'utilisateur et mot de passe).
  2. L'application utilise ces informations d'identification pour générer un JWT et le renvoyer à l'utilisateur.
  3. L'utilisateur inclut ce JWT dans l'en-tête Authorization en tant que jeton Bearer dans les requêtes ultérieures.
  4. L'application extrait les informations utilisateur du JWT et vérifie leur identité.

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 :

  1. App Le programme vérifie l'identité de l'utilisateur avant d'accéder aux ressources protégées.
  2. Si l'utilisateur a été authentifié, l'application vérifie que le JWT contient les rôles ou autorisations appropriés.
  3. Si l'utilisateur dispose du rôle ou des autorisations appropriés, l'application lui accorde l'accès à la ressource demandée.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn