php jwt 实现
PHP JWT 实现方法
安装依赖库
使用Composer安装firebase/php-jwt库,这是一个广泛使用的JWT实现库。
composer require firebase/php-jwt
生成JWT Token
创建一个函数来生成JWT Token,需要提供有效载荷(payload)和密钥(secret key)。
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
function generateJWT($payload, $secretKey) {
$token = JWT::encode($payload, $secretKey, 'HS256');
return $token;
}
验证JWT Token
创建一个函数来验证JWT Token并解码其内容。
function validateJWT($token, $secretKey) {
try {
$decoded = JWT::decode($token, new Key($secretKey, 'HS256'));
return (array) $decoded;
} catch (Exception $e) {
return null;
}
}
示例使用
生成和验证JWT的完整示例。
$secretKey = 'your-secret-key';
$payload = [
'user_id' => 123,
'username' => 'example_user',
'exp' => time() + 3600 // 设置Token过期时间为1小时后
];
// 生成Token
$token = generateJWT($payload, $secretKey);
echo "Generated Token: " . $token . "\n";
// 验证Token
$decoded = validateJWT($token, $secretKey);
if ($decoded) {
echo "Decoded Payload: ";
print_r($decoded);
} else {
echo "Invalid or expired token.";
}
注意事项
- 密钥安全:确保密钥(
$secretKey)足够复杂且保密,避免泄露。 - 过期时间:在payload中设置
exp字段以避免Token被长期滥用。 - 算法选择:示例中使用
HS256(HMAC SHA256),适合大多数场景。如需更高级别安全,可考虑RS256(非对称加密)。 - 异常处理:捕获
JWT::decode可能抛出的异常(如过期或篡改Token)。
扩展功能
如需支持刷新Token或自定义Claims,可在payload中增加字段(如refresh_token或自定义业务数据)。







