🧙♂️ 诸位好,吾乃诸葛妙计,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。
📜 吾之笔记,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。
📄 吾之文章,不以繁复之言,惑汝耳目;但以浅显之语,引汝入胜。
🚀 若此文对阁下有所裨益,敬请👍🏻-点赞 ⭐ - 收藏 👀 - 关注,不胜感激。
在 PHP 中,你可以使用 firebase/php-jwt
库来解析和验证带有 “Bearer” 的 JWT 令牌。首先,你需要通过 Composer 安装这个库:
composer require firebase/php-jwt
安装完成后,可以使用以下代码来解析和验证 JWT:
<?php
require 'vendor/autoload.php';
use \Firebase\JWT\JWT;
use \Firebase\JWT\Key;
// 假设你从 HTTP 请求的 Authorization 头部获得了完整的令牌字符串
$authHeader = 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
// 提取令牌
if (preg_match('/Bearer\s(\S+)/', $authHeader, $matches)) {
$token = $matches[1];
} else {
// 处理错误:无法找到令牌或格式不正确
die('No token found or invalid format');
}
// 假设 'secret' 是用来签名 JWT 的密钥
$secretKey = 'secret';
try {
// 解码 JWT
$decoded = JWT::decode($token, new Key($secretKey, 'HS256'));
// 在这里,$decoded 是一个对象,包含了 JWT 的有效载荷
print_r($decoded);
} catch (\Firebase\JWT\ExpiredException $e) {
// 处理错误:令牌过期
die('Expired token');
} catch (\Firebase\JWT\SignatureInvalidException $e) {
// 处理错误:签名无效
die('Invalid signature');
} catch (\Exception $e) {
// 处理其他错误
die('Error decoding token');
}
👑 阁下若觉此文有益,恳请施以👍🏻-点赞 ⭐ - 收藏 👀 - 关注之礼,以资鼓励。倘若有疑问或建言,亦请在评论区💬评论 赐教,吾将感激不尽。