php jwt如何验证令牌合法性

PHP
988
2024/11/19 6:31:01
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

要验证PHP JWT(JSON Web Token)的合法性,您需要使用一个支持JWT的库。一个流行的库是firebase/php-jwt。首先,您需要安装这个库:

composer require firebase/php-jwt

然后,您可以使用以下代码来验证JWT的合法性:

require_once 'vendor/autoload.php';

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

// 用于签名和验证JWT的密钥
$key = "your-256-bit-secret";

// 要验证的JWT
$jwt = "your-jwt-token";

try {
    // 尝试解码和验证JWT
    $decoded = JWT::decode($jwt, new JWK([
        'alg' => 'HS256',
        'use' => 'sig',
        'kid' => 'your-key-id'
    ]), ['HS256']);

    // 如果验证成功,$decoded将包含令牌的有效负载
    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) {
    // 如果发生其他错误,将抛出此异常
    echo "An error occurred: " . $e->getMessage();
}

请确保将your-256-bit-secret替换为您自己的密钥,将your-jwt-token替换为要验证的JWT,以及将your-key-id替换为您的密钥ID(如果有)。

这个示例首先尝试解码和验证JWT。如果验证成功,它将输出令牌的有效负载。如果JWT已过期、签名无效或发生其他错误,它将捕获相应的异常并输出相应的错误消息。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: PHP中array_search()查找出现0值怎么处理