JWT (JSON Web Token) est un jeton de chiffrement utilisé pour transmettre des informations sécurisées entre les applications réseau. Il transmet en toute sécurité des informations entre le client et le serveur sous la forme d'un objet JSON.
JWT se compose de trois parties: en-tête, charge utile et signature.
En-tête: déclare l'algorithme de type et de chiffrement du jeton. Exemple:
{
"alg": "HS256",
"typ": "JWT"
}
Charge utile: contient quelques déclarations standard et déclarations personnalisées. Exemple:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Signature: Générer en signant le codage de base64 de l'en-tête et de la charge utile avec une clé.
Pour utiliser la vérification JWT dans ThinkPhp6, vous devez d'abord installer l'extension JWT. Dans le fichier composer.json dans le répertoire du projet, ajoutez les dépendances suivantes:
"require": {
"firebase/php-jwt": "5.0.0"
}
Exécutez ensuite la commande Composer Install pour installer l'extension JWT.
Après avoir enregistré avec succès, nous pouvons générer un jeton et le retourner au client. Exemple de code:
use think\jwt\JWT;
public function login() {
// Logique de connexion
$payload = [
'sub' => $user->id,
'name' => $user->username,
'iat' => time()
];
$token = JWT::encode($payload, $key);
return json(['token' => $token]);
}
Partout où vous avez besoin de vérifier l'identité de l'utilisateur, vous pouvez utiliser JWT pour vérifier la validité du jeton. Exemple de code:
use think\jwt\JWT;
public function getUser(Request $request) {
$token = $request->header('Authorization');
try {
$payload = JWT::decode($token, $key, ['HS256']);
$user = User::get($payload->sub); // Obtenez des informations utilisateur à partir de la base de données
return json($user);
} catch (Exception $e) {
return json(['error' => 'Token is invalid']);
}
}
JWT est une méthode d'authentification pratique et sécurisée, et il est également très simple d'implémenter l'authentification JWT dans ThinkPhp6. Grâce au processus de génération et de vérification des jetons, l'identité de l'utilisateur peut être protégé efficacement. Dans le même temps, la protection de la clé secrète et la définition raisonnable du temps d'expiration du jeton peuvent améliorer encore la sécurité du système.