在 PHP 中使用 JWT(JSON Web Token)可以通过一些库来简化操作。最常用的库之一是 firebase/php-jwt。下面是一个简单的示例,展示如何生成和验证 JWT。
安装 firebase/php-jwt
首先,确保你已经安装了 Composer。然后在你的项目中运行以下命令来安装 firebase/php-jwt:
composer require firebase/php-jwt
生成 JWT
以下是一个生成 JWT 的示例:
<?php
require 'vendor/autoload.php';
use \Firebase\JWT\JWT;
$key = "your_secret_key"; // 替换为你的密钥
$payload = [
"iss" => "http://yourdomain.com", // 发行者
"aud" => "http://yourdomain.com", // 接收者
"iat" => time(), // 签发时间
"exp" => time() + 3600, // 过期时间(1小时)
"data" => [
"userId" => 123, // 用户ID
"username" => "exampleUser" // 用户名
]
];
// 生成 JWT
$jwt = JWT::encode($payload, $key);
echo "Generated JWT: " . $jwt;
?>
验证 JWT
以下是一个验证 JWT 的示例:
<?php
require 'vendor/autoload.php';
use \Firebase\JWT\JWT;
use \Firebase\JWT\ExpiredException;
$key = "your_secret_key"; // 替换为你的密钥
$jwt = "your_jwt_token"; // 替换为你要验证的 JWT
try {
// 解码 JWT
$decoded = JWT::decode($jwt, $key, ['HS256']);
print_r($decoded);
} catch (ExpiredException $e) {
echo "Token has expired.";
} catch (Exception $e) {
echo "Error decoding token: " . $e->getMessage();
}
?>
注意事项
密钥管理:确保你的密钥安全,不要在代码中硬编码敏感信息。可以考虑使用环境变量来存储密钥。
过期时间:合理设置 JWT 的过期时间,避免长期有效的令牌带来的安全风险。
HTTPS:在生产环境中,确保通过 HTTPS 传输 JWT,以防止中间人攻击。
以上是一个简单的 PHP JWT 使用示例,你可以根据自己的需求进行扩展和修改。
发表评论 取消回复