Maison  >  Article  >  cadre php  >  Utiliser JWT pour l'authentification dans ThinkPHP6

Utiliser JWT pour l'authentification dans ThinkPHP6

王林
王林original
2023-06-21 13:34:401993parcourir

Dans le développement actuel à grande échelle des applications Internet, l’authentification de sécurité des utilisateurs est un élément essentiel. Pour garantir la sécurité des utilisateurs, une pratique courante consiste à utiliser JSON Web Token (JWT) pour l'authentification. Il peut mettre en œuvre l’authentification des utilisateurs et le contrôle des autorisations de manière simple et efficace. Dans cet article, nous expliquerons comment utiliser JWT pour l'authentification dans le projet ThinkPHP6.

Qu'est-ce que le jeton Web JSON ?

JSON Web Token (JWT) est un mécanisme d'authentification léger. Son objectif est de transmettre en toute sécurité les réclamations sur le réseau et il peut être utilisé comme moyen d'authentification et d'échange de réclamations. JWT est contenu dans les en-têtes de requête HTTP ou les paramètres d'URL, il est donc facilement et commodément transféré entre le serveur et le client.

JWT se compose de trois parties : en-tête, charge utile et signature. L'en-tête contient des informations décrivant l'algorithme et le type de signature, la charge utile contient des informations de déclaration et de données, et la signature est utilisée pour vérifier la légitimité du JWT. Toutes les données peuvent être stockées dans la charge utile JWT et vous pouvez personnaliser les informations dont vous avez besoin.

Étapes pour utiliser JWT pour l'authentification dans ThinkPHP6

Étape 1 : Installez l'extension jwt-auth

Tout d'abord, nous devons introduire l'extension jwt-auth dans le projet. Ajoutez les dépendances suivantes dans le fichier composer.json :

"tymon/jwt-auth": "^1.0.0-rc.5"

Utilisez composer update pour mettre à jour après avoir installé les dépendances.

Étape 2 : Générer le fichier de configuration

Exécutez la commande suivante pour générer le fichier de configuration :

php think jwt:publish

Après avoir généré le fichier de configuration, nous devons modifier la configuration, définir des paramètres tels que la clé JWT et la période de validité, et modifier le Fichier /config/jwt.php.

Étape 3 : Écrire un middleware d'authentification

Le processus d'authentification de JWT doit être complété côté serveur. Par conséquent, nous devons créer un middleware AuthMiddleware pour authentifier le JWT avant que la requête n'atteigne le contrôleur.

Tout d'abord, nous devons créer le fichier AuthMiddleware :

php think make:middleware AuthMiddleware

Dans le fichier AuthMiddleware, nous pouvons utiliser le code suivant pour authentifier le JWT :

<?php
namespace appmiddleware;

use thinkacadeRequest;
use TymonJWTAuthExceptionsTokenExpiredException;
use TymonJWTAuthFacadesJWTAuth;
use thinkexceptionHttpException;

class AuthMiddleware
{
    public function handle($request, Closure $next)
    {
        //获取JWT token
        $token = JWTAuth::getToken();
        if (!$token) {
            throw new HttpException(401, 'Token not provided');
        }

        try {
            //验证JWT token
            $user = JWTAuth::authenticate($token);
            $request->user = $user;
        } catch (TokenExpiredException $exception) {
            throw new HttpException(401, 'Token expired');
        } catch (Exception $exception) {
            throw new HttpException(401, 'Token invalid');
        }

        return $next($request);
    }
}

Dans la fonction handle, nous obtenons d'abord le token du JWT. Si le jeton n'existe pas, une exception 401 sera levée.

Si le jeton existe, nous utilisons JWTAuth::authenticate($token) pour vérifier la validité du jeton en cas de succès, les informations utilisateur seront liées au contexte de la demande.

Il convient de noter que dans le code ci-dessus, toutes les exceptions levées renverront un code d'erreur 401.

Étape 4 : Utiliser le middleware pour l'authentification

Utilisez le middleware AuthMiddleware dans le contrôleur pour l'authentification, comme indiqué ci-dessous :

<?php
namespace appcontroller;

use appmiddlewareAuthMiddleware;

class UserController extends Base
{
    protected $middleware = [
        AuthMiddleware::class
    ];

    public function index()
    {
        return json($this->request->user, 200);
    }
}

Dans le code ci-dessus, nous avons ajouté un middleware AuthMiddleware au contrôleur, donc dans la requête Ce middleware sera automatiquement exécuté avant d’atteindre le contrôleur.

La méthode d'indexation du contrôleur renvoie les informations utilisateur actuellement demandées. Si l'authentification JWT est correcte, les informations utilisateur au format json seront renvoyées.

Conclusion

Cet article explique comment utiliser JWT pour l'authentification dans le projet ThinkPHP6. Nous avons présenté en détail le processus de mise en œuvre de l'authentification JWT en installant l'extension JWT et en générant des fichiers de configuration, en écrivant un middleware d'authentification et en utilisant un middleware. Au cours de ce processus, nous avons acquis une compréhension plus approfondie des connaissances liées à JWT et fourni une expérience précieuse pour le développement futur d'Internet.

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