Utilisation de la validation JWT dans ThinkPHP6
Avec le développement d'Internet, le nombre d'utilisateurs d'applications Web a progressivement augmenté, et les enjeux de sécurité sont devenus de plus en plus importants. L'authentification est un élément important de la sécurité des applications Web, car seuls les utilisateurs authentifiés peuvent accéder aux ressources nécessitant des autorisations.
JSON Web Token (JWT) est un jeton d'authentification léger et autonome qui constitue un excellent moyen de transférer en toute sécurité des informations entre des applications Web. Le schéma d'authentification JWT convient aux systèmes distribués et aux applications monopage.
ThinkPHP est un framework PHP populaire qui fournit de nombreux outils pour développer des applications Web sécurisées. Dans cet article, nous expliquerons comment utiliser JWT pour l'authentification dans ThinkPHP6 afin d'améliorer la sécurité de votre application.
Environnement de développement et dépendances
Avant de commencer, nous devons nous assurer que l'environnement de développement a été correctement configuré. Voici les environnements et dépendances utilisés dans cet article. Veuillez modifier en conséquence en fonction de vos besoins.
- PHP 7.2 ou supérieur
- ThinkPHP 6.0.0 ou supérieur
- Bibliothèque PHP Firebase JWT
Étape 1 : Installer la bibliothèque PHP Firebase JWT
L'installation de la bibliothèque PHP Firebase JWT est la première étape pour utiliser le schéma d'authentification JWT. Cette bibliothèque nous aidera à créer, signer et vérifier des JWT.
Nous pouvons installer la bibliothèque PHP Firebase JWT en utilisant Composer. Saisissez la commande suivante dans la ligne de commande :
composer require firebase/php-jwt
Étape 2 : Créer une classe Token
Afin de faciliter la gestion et l'utilisation de JWT, nous créons une classe nommée Token pour gérer la vérification JWT sous tous ses aspects. Cette classe comprendra des fonctions telles que la création de jetons, la vérification des jetons et l'obtention d'informations sur les jetons.
Créez le fichier Token.php dans le répertoire app/common et ajoutez le code suivant :
<?php namespace appcommon; use FirebaseJWTJWT; class Token { private static $key = 'your_secret_key'; private static $alg = 'HS256'; public static function createToken($data, $expiration = 3600) { $payload = [ 'iss' => 'localhost', 'sub' => 'token', 'iat' => time(), 'exp' => time() + $expiration, 'data' => $data ]; return JWT::encode($payload, self::$key, self::$alg); } public static function decodeToken($token) { return JWT::decode($token, self::$key, [self::$alg]); } public static function getDataByToken($token) { $decoded = self::decodeToken($token); if (isset($decoded->data)) { return $decoded->data; } else { return false; } } public static function verifyToken($token) { $result = false; try { $decoded = self::decodeToken($token); $result = true; } catch (Exception $e) { // Invalid token } return $result; } }
Dans le code, on utilise le FirebaseJWTJWT
bibliothèque Les méthodes encode()
et decode()
sont utilisées pour créer et analyser JWT. $key
est la clé que nous utilisons pour signer le JWT, et $alg
est l'algorithme que nous choisissons. Dans la méthode createToken()
, nous utilisons les quatre clés (iss, iat, exp et sub) de la charge utile JWT et ajoutons des données
personnalisées. Le paramètre $expiration
spécifie le délai d'expiration du JWT. Par conséquent, JWT ne peut être utilisé que pendant la période de validité. FirebaseJWTJWT
库中的encode()
和decode()
方法来创建和解析 JWT。$key
是我们用于签名 JWT 的密钥,$alg
是我们选择的算法。 在createToken()
方法中,我们使用 JWT 负载中的四个键(iss,iat,exp和sub)并添加自定义data
。$expiration
参数指定 JWT 的过期时间。因此,JWT 只能在有效期内使用。
步骤3:在中间件中验证令牌
现在我们已经创建了 Token 类以处理 JWT 相关的工作,我们需要在中间件中验证用户 JWT。使用中间件可以方便地在应用程序的控制器代码中拦截和设置响应,并且可以将代码分离到不同的类中以便更好地管理和修改。
在 app/middleware 目录下创建Jwt.php文件,并添加以下代码:
<?php namespace appmiddleware; use appcommonToken; use thinkexceptionHttpResponseException; use thinkResponse; class Jwt { public function handle($request, Closure $next) { if (!$request->header('Authorization')) { return json(['code' => 401, 'msg' => 'Unauthorized']); } $header = $request->header('Authorization'); $token = substr($header, 7); if (Token::verifyToken($token)) { $request->data = Token::getDataByToken($token); return $next($request); } else { return json(['code' => 401, 'msg' => 'Unauthorized']); } } }
在此中间件中,我们使用 Token 类中的verifyToken()
方法来验证 JWT。 此方法将返回 true 或 false,表示令牌是否有效。 如果有效,我们将使用getDataByToken()
方法来获取 JWT 的数据部分并将其存储在$request->data
中。 这样,控制器就可以使用此数据。
步骤4:设置路由
现在,我们已经创建了中间件,我们需要将其应用到适当的路由上。
假设我们要保护/api/user
的路由,我们需要在routepi.php
文件中按如下方式设置路由:
use appmiddlewareJwt; Route::group('api', function() { Route::get('user', 'UserController@getUserInfo')->middleware(Jwt::class); });
请注意,在此路由中,我们将Jwt
中间件作为参数传递给middleware()
方法。这是UserController
中的getUserInfo()
方法的示例代码。
<?php namespace appcontroller; use appcommonToken; class UserController { public function getUserInfo() { $data = request()->data; ... } ... }
在控制器中,您可以通过调用$request->data
rrreee
Dans ce middleware, nous utilisonsverifyToken dans la classe Token ( )
pour vérifier le JWT. Cette méthode renverra vrai ou faux indiquant si le jeton est valide. Si elle est valide, nous utiliserons la méthode getDataByToken()
pour obtenir la partie données du JWT et la stockerons dans $request->data
. Ces données sont ensuite disponibles pour le responsable du traitement. Étape 4 : Configurer les routes #🎜🎜##🎜🎜#Maintenant que nous avons créé le middleware, nous devons l'appliquer aux routes appropriées. #🎜🎜##🎜🎜# En supposant que nous souhaitons protéger la route de /api/user
, nous devons définir la route dans le fichier route pi.php
comme suit : # 🎜🎜#rrreee#🎜🎜#Veuillez noter que dans cette route, nous passons le middleware Jwt
en paramètre à la méthode middleware()
. Ceci est l'exemple de code pour la méthode getUserInfo()
dans UserController
. #🎜🎜#rrreee#🎜🎜#Dans le contrôleur, vous pouvez accéder aux données stockées dans le JWT authentifié en appelant $request->data
. #🎜🎜##🎜🎜#Conclusion#🎜🎜##🎜🎜#La méthode d'authentification JWT peut rendre votre application Web plus sécurisée et fiable. Dans cet article, nous avons expliqué comment utiliser la bibliothèque PHP Firebase JWT pour créer et valider des JWT dans ThinkPHP6. #🎜🎜##🎜🎜# Nous avons créé une classe appelée Token, qui est utilisée pour gérer le travail lié à JWT, et ajouté un middleware pour valider JWT et définir les données. Enfin, nous configurons le code de routage et de contrôleur qui utilise ce middleware pour accéder aux données stockées dans le JWT. #🎜🎜##🎜🎜#L'objectif principal de l'introduction de l'authentification JWT est de garantir que les ressources de l'application ne peuvent être utilisées que par des utilisateurs authentifiés. J'espère que cet article vous a aidé à comprendre comment utiliser l'authentification JWT pour sécuriser votre application ! #🎜🎜#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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment supprimer les valeurs en double du tableau PHP à l'aide d'expressions régulières : utilisez l'expression régulière /(.*)(.+)/i pour faire correspondre et remplacer les doublons. Parcourez les éléments du tableau et vérifiez les correspondances à l'aide de preg_match. S'il y a une correspondance, ignorez la valeur ; sinon, ajoutez-la à un nouveau tableau sans valeurs en double.

1. La programmation peut être utilisée pour développer divers logiciels et applications, notamment des sites Web, des applications mobiles, des jeux et des outils d'analyse de données. Ses domaines d'application sont très larges, couvrant presque tous les secteurs, notamment la recherche scientifique, la santé, la finance, l'éducation, le divertissement, etc. 2. L'apprentissage de la programmation peut nous aider à améliorer nos compétences en résolution de problèmes et nos capacités de réflexion logique. Lors de la programmation, nous devons analyser et comprendre les problèmes, trouver des solutions et les traduire en code. Cette façon de penser peut cultiver nos capacités analytiques et abstraites et améliorer notre capacité à résoudre des problèmes pratiques.

Python est un langage d'introduction à la programmation idéal pour les débutants grâce à sa facilité d'apprentissage et ses fonctionnalités puissantes. Ses bases incluent : Variables : utilisées pour stocker des données (nombres, chaînes, listes, etc.). Type de données : Définit le type de données dans la variable (entier, virgule flottante, etc.). Opérateurs : utilisés pour les opérations mathématiques et les comparaisons. Flux de contrôle : contrôlez le flux d'exécution du code (instructions conditionnelles, boucles).

Python permet aux débutants de résoudre des problèmes. Sa syntaxe conviviale, sa bibliothèque complète et ses fonctionnalités telles que les variables, les instructions conditionnelles et les boucles permettent un développement de code efficace. De la gestion des données au contrôle du flux du programme et à l'exécution de tâches répétitives, Python fournit

Les énigmes de programmation C++ couvrent les concepts d'algorithme et de structure de données tels que la séquence de Fibonacci, la factorielle, la distance de Hamming, les valeurs maximales et minimales des tableaux, etc. En résolvant ces énigmes, vous pouvez consolider vos connaissances en C++ et améliorer la compréhension des algorithmes et vos compétences en programmation.

C est un choix idéal pour les débutants qui souhaitent apprendre la programmation système. Il contient les composants suivants : fichiers d'en-tête, fonctions et fonctions principales. Un simple programme C capable d'imprimer "HelloWorld" a besoin d'un fichier d'en-tête contenant la déclaration de fonction d'entrée/sortie standard et utilise la fonction printf dans la fonction principale pour imprimer. Les programmes C peuvent être compilés et exécutés à l'aide du compilateur GCC. Après avoir maîtrisé les bases, vous pouvez passer à des sujets tels que les types de données, les fonctions, les tableaux et la gestion des fichiers pour devenir un programmeur C compétent.

Utilisation du framework ThinkPhp6 combiné avec le client Elasticsearch-PHP pour faire fonctionner Elasticsearch ...

La gestion des erreurs dans Go inclut les erreurs d’encapsulage et les erreurs de déballage. L'encapsulation des erreurs permet d'encapsuler un type d'erreur avec un autre, fournissant ainsi un contexte plus riche pour l'erreur. Développez les erreurs et parcourez la chaîne d'erreurs imbriquée pour trouver l'erreur de niveau le plus bas pour un débogage facile. En combinant ces deux technologies, les conditions d'erreur peuvent être gérées efficacement, offrant un contexte d'erreur plus riche et de meilleures capacités de débogage.
