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 thinkacadeRequest; 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!