php单页面 jwt composer 包
在 PHP 中,单页面应用(SPA)使用 JWT(JSON Web Token)进行身份验证时,可以使用 composer 安装相应的 JWT 包来生成和验证 JWT。最常用的 PHP JWT 包是 firebase/php-jwt 和 tymon/jwt-auth。以下是安装和配置这些包的示例。
1. 使用 firebase/php-jwt 包
firebase/php-jwt 是一个轻量级的 JWT 处理库,适用于需要自己控制 JWT 生成和验证过程的应用。
安装 firebase/php-jwt
通过 Composer 安装:
bash
composer require firebase/php-jwt
生成和验证 JWT
php
// 使用 firebase/php-jwt 库
require_once 'vendor/autoload.php';
use \Firebase\JWT\JWT;
// 设置密钥
$key = "your_secret_key";
// 生成 JWT Token
function generateJWT($userId) {
global $key;
$issuedAt = time();
$expirationTime = $issuedAt + 3600; // jwt有效期1小时
$payload = [
"iss" => "your-app-name",
"iat" => $issuedAt,
"exp" => $expirationTime,
"user_id" => $userId
];
return JWT::encode($payload, $key);
}
// 验证 JWT Token
function validateJWT($jwt) {
global $key;
try {
$decoded = JWT::decode($jwt, $key, ['HS256']);
return (array) $decoded;
} catch (Exception $e) {
return null; // 如果验证失败,返回 null
}
}
使用示例
php
// 登录时生成 Token
$userId = 123; // 假设用户 ID 为 123
$jwt = generateJWT($userId);
echo "Generated JWT: " . $jwt;
// 在后续请求中验证 Token
$receivedJwt = "user-received-jwt-token"; // 前端传递的 JWT
$decoded = validateJWT($receivedJwt);
if ($decoded) {
echo "User ID: " . $decoded['user_id']; // 用户 ID
} else {
echo "Invalid or expired token.";
}