php单页面 jwt composer 包

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.";
}

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: