Développement PHP : Comment utiliser JWT pour protéger les informations d'authentification des utilisateurs

王林
Libérer: 2023-06-15 21:28:01
original
1691 Les gens l'ont consulté

Dans le développement d'applications Web d'aujourd'hui, la protection des informations d'authentification de l'identité des utilisateurs est cruciale. JWT (JSON Web Token) est une méthode d'authentification d'identité sécurisée qui utilise le format JSON pour coder les informations d'authentification et utilise des signatures pour protéger l'intégrité des données. Cet article explique comment utiliser JWT pour protéger les informations d'authentification des utilisateurs dans le développement PHP.

  1. Installer JWT

Tout d'abord, nous devons installer JWT dans le projet PHP. JWT peut être installé à l'aide de l'outil Composer, la commande est la suivante :

composer require firebase/php-jwt
Copier après la connexion
  1. Générer JWT

Une fois l'utilisateur authentifié avec succès, nous devons générer le JWT et le renvoyer au client. En PHP, vous pouvez générer JWT en utilisant le code suivant :

use FirebaseJWTJWT;

$payload = array(
    "user_id" => 1234,
    "email" => "john@doe.com"
);

$secret_key = "secret_key";
$jwt = JWT::encode($payload, $secret_key);
Copier après la connexion

Utilisez la méthode JWT::encode() pour générer JWT. Le premier paramètre est un tableau associatif contenant des informations utilisateur et le deuxième paramètre est la clé utilisée pour signer le JWT. Le JWT généré peut être renvoyé directement au client.

  1. Vérifier JWT

Une fois que le client reçoit le JWT, il stocke le JWT localement et l'envoie à chaque demande afin que le serveur puisse authentifier l'utilisateur. En PHP, pour valider un JWT, vous devez utiliser le code suivant :

use FirebaseJWTJWT;

$jwt = "generated_jwt";

$secret_key = "secret_key";
try {
    $decoded = JWT::decode($jwt, $secret_key, array("HS256"));
    $user_id = $decoded->user_id;
    $email = $decoded->email;
} catch (Exception $e) {
    // JWT 验证失败
}
Copier après la connexion

Utilisez la méthode JWT::decode() pour valider un JWT. Le premier paramètre est le JWT à vérifier, le deuxième paramètre est la clé utilisée pour signer le JWT et le troisième paramètre spécifie l'algorithme de signature utilisé. Si la validation JWT réussit, un objet $decoded contenant les informations utilisateur sera renvoyé.

  1. Validité et délai d'expiration personnalisés

Par défaut, JWT ne contient pas de période de validité ni de délai d'expiration, il peut donc être utilisé pour toujours. Afin de mieux protéger les informations d'authentification de l'identité de l'utilisateur, nous pouvons définir la période de validité et le délai d'expiration de JWT.

use FirebaseJWTJWT;

$payload = array(
    "user_id" => 1234,
    "email" => "john@doe.com",
    "exp" => time() + 3600,  // 有效期为 1 小时
    "nbf" => time() + 30  // 在 30 秒内无效
);

$secret_key = "secret_key";
$jwt = JWT::encode($payload, $secret_key);
Copier après la connexion

Dans le code ci-dessus, nous déclarons la validité et l'heure d'expiration du JWT en définissant "exp" (période de validité) et "nbf" (pas avant). Lors de la validation d'un JWT à l'aide de la méthode JWT::decode(), une exception sera levée si le JWT a expiré ou n'a pas encore entré sa période de validité.

  1. Résumé

L'utilisation de JWT dans le développement PHP est une méthode d'authentification sécurisée qui peut nous aider à mieux protéger les informations d'authentification des utilisateurs. Nous pouvons utiliser la bibliothèque PHP-JWT pour générer et vérifier JWT, et définir des délais de validité et d'expiration pour augmenter la sécurité. Pour garantir la sécurité de notre application, nous devons gérer les clés JWT avec soin et gérer correctement les erreurs.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal