在ThinkPHP框架下使用JWT进行身份认证和TOKEN验证,需要以下步骤:
在 composer.json
文件中添加以下依赖项:
"firebase/php-jwt": "^5.2"
然后执行 composer update
命令安装依赖项。
在用户登录成功后,可以生成 JWT 并返回给客户端。使用 firebase/php-jwt
扩展来生成 JWT,示例代码如下:
use Firebase\JWT\JWT;
...
// 生成JWT
$payload = array(
"user_id" => $user_id,
"username" => $username,
"exp" => time() + 3600 // 过期时间为1小时
);
$jwt = JWT::encode($payload, "secret_key");
其中,$payload
是需要存储在 JWT 中的用户信息,exp
是过期时间,"secret_key"
是用于签名的私钥。
在需要验证用户身份的接口中,需要对客户端传来的 JWT 进行验证。使用 firebase/php-jwt
扩展来验证 JWT,示例代码如下:
use Firebase\JWT\JWT;
...
// 验证JWT
$jwt = input('token');
try {
$decoded = JWT::decode($jwt, "secret_key", array('HS256'));
$user_id = $decoded->user_id;
} catch (\Firebase\JWT\ExpiredException $e) {
// JWT已过期
} catch (\Exception $e) {
// JWT验证失败
}
其中,input('token')
是获取客户端传来的 JWT,"secret_key"
是用于签名的私钥,$decoded
是解码后的 JWT,$user_id
是从 JWT 中解析出来的用户信息。
在验证 JWT 时,可能会抛出过期异常或其他异常,需要进行相应的处理。
以上就是在 ThinkPHP 框架下使用 JWT 进行身份认证和 TOKEN 验证的基本流程。