要驗(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ò)誤消息。