溫馨提示×

php jwt如何驗(yàn)證令牌合法性

PHP
小樊
81
2024-11-19 06:03:35
欄目: 編程語言

要驗(yàn)證PHP JWT(JSON Web Token)的合法性,您需要使用一個(gè)支持JWT的庫。一個(gè)流行的庫是firebase/php-jwt。首先,您需要安裝這個(gè)庫:

composer require firebase/php-jwt

然后,您可以使用以下代碼來驗(yàn)證JWT的合法性:

require_once 'vendor/autoload.php';

use \Firebase\JWT\JWK;
use \Firebase\JWT\JWT;

// 用于簽名和驗(yàn)證JWT的密鑰
$key = "your-256-bit-secret";

// 要驗(yàn)證的JWT
$jwt = "your-jwt-token";

try {
    // 嘗試解碼和驗(yàn)證JWT
    $decoded = JWT::decode($jwt, new JWK([
        'alg' => 'HS256',
        'use' => 'sig',
        'kid' => 'your-key-id'
    ]), ['HS256']);

    // 如果驗(yàn)證成功,$decoded將包含令牌的有效負(fù)載
    echo "JWT is valid. Payload: " . json_encode($decoded);
} catch (\Firebase\JWT\ExpiredException $e) {
    // 如果JWT已過期,將拋出此異常
    echo "JWT has expired.";
} catch (\Firebase\JWT\SignatureInvalidException $e) {
    // 如果簽名無效,將拋出此異常
    echo "Invalid JWT signature.";
} catch (\Exception $e) {
    // 如果發(fā)生其他錯(cuò)誤,將拋出此異常
    echo "An error occurred: " . $e->getMessage();
}

請確保將your-256-bit-secret替換為您自己的密鑰,將your-jwt-token替換為要驗(yàn)證的JWT,以及將your-key-id替換為您的密鑰ID(如果有)。

這個(gè)示例首先嘗試解碼和驗(yàn)證JWT。如果驗(yàn)證成功,它將輸出令牌的有效負(fù)載。如果JWT已過期、簽名無效或發(fā)生其他錯(cuò)誤,它將捕獲相應(yīng)的異常并輸出相應(yīng)的錯(cuò)誤消息。

0