Position actuelle: Accueil> Derniers articles> Tutoriel détaillé sur l'utilisation de JWT pour implémenter l'authentification et l'autorisation dans ThinkPhp Framework

Tutoriel détaillé sur l'utilisation de JWT pour implémenter l'authentification et l'autorisation dans ThinkPhp Framework

gitbox 2025-07-03

Qu'est-ce que JWT

JWT (Token Web JSON) est une norme ouverte pour l'authentification, qui authentifie l'identité de l'utilisateur en passant des informations sécurisées entre le client et le serveur. JWT se compose de trois parties: en-tête, charge utile et signature. Parmi eux, l'en-tête spécifie l'algorithme de signature, la charge utile stocke les informations utilisateur, et la signature est utilisée pour assurer l'intégrité du JWT et empêcher la falsification.

Avantages de l'utilisation de JWT

1. Stateless: Le jeton JWT ne nécessite pas que le serveur enregistre les informations de session et peut être facilement élargi entre plusieurs serveurs.

2. Sécurité: JWT assure l'intégrité et l'authenticité des données par le biais de signatures pour éviter la falsification des données.

3. Évolutivité: La partie de chargement de JWT peut stocker les informations nécessaires et convient à une variété de scénarios d'application.

Utilisation de JWT dans le framework ThinkPhp

Pour utiliser JWT dans le framework ThinkPHP, vous devez d'abord installer la bibliothèque `Firebase / php-jwt`. Vous pouvez utiliser Composer pour installer, la commande est la suivante:

 <span class="fun">Le compositeur nécessite Firebase / PHP-JWT</span>

Générer JWT

Le processus de génération d'un JWT comprend la création d'un en-tête, la définition d'une charge utile et la signature avec une clé privée. Dans ThinkPhp, les méthodes peuvent être écrites dans le contrôleur pour générer des JWT. Voici un exemple de code:

 use Firebase\JWT\JWT;

class UserController extends Controller {
    public function createJwt($userId, $username) {
        $key = 'your_secret_key';
        $payload = array(
            'user_id' => $userId,
            'username' => $username,
            'exp' => time() + 3600 // Réglez le temps d&#39;expiration à1Heure
        );
        $jwt = JWT::encode($payload, $key);
        return $jwt;
    }
}

Dans le code ci-dessus, la méthode `CREATEJWT» génère un JWT, y compris l'ID utilisateur, le nom d'utilisateur et le temps d'expiration.

Vérifiez JWT

La vérification JWT peut être gérée en créant un middleware. Voici l'exemple de code pour valider JWT:

 use Firebase\JWT\JWT;

class JwtMiddleware {
    public function handle($request, Closure $next) {
        $key = 'your_secret_key';
        $jwt = $request->header('Authorization');
        try {
            JWT::decode($jwt, $key, array('HS256'));
            return $next($request);
        } catch (Exception $e) {
            return response('Unauthorized.', 401);
        }
    }
}

Dans cet exemple, la méthode «manche» extrait le JWT de la demande et vérifie sa validité. Si le JWT est valide, la demande se poursuivra, sinon la réponse 401 non autorisée sera retournée.

Protéger le routage avec JWT

Pour protéger certains itinéraires, le middleware de vérification JWT peut être appliqué lorsque les définitions de route. Voici un exemple de code pour protéger les itinéraires:

 use Firebase\JWT\JWT;

Route::get('/protected', function () {
    return response('Protected resource.');
})->middleware('jwt');

Dans cet exemple, la méthode «middleware» applique le middleware de vérification JWT à l'itinéraire «/ protégé», garantissant que seules les demandes qui transmettent la vérification peuvent accéder à l'itinéraire.

Résumer

En utilisant JWT, vous pouvez implémenter des mécanismes d'authentification et d'autorisation efficaces dans le framework ThinkPHP. L'utilisation de JWT améliore non seulement la sécurité de l'application, mais offre également une évolutivité flexible. Ce tutoriel décrit comment générer JWT, vérifier JWT et utiliser JWT pour protéger les itinéraires sensibles. J'espère que cet article vous aidera à mieux comprendre et appliquer JWT.