一、安装:
1.运行下面命令
composer require firebase/php-jwt
2.这里运行的时候遇到了一个问题
这里的意思大概就是你是composer版本1需要升级为版本2运行下面代码升级为2
composer self-update --2
然后在运行上面的代码这里应该就完了
二、使用
这里我的jwt是最新的版本,就直接用我代码就是了
use Firebase\JWT\ExpiredException;
require_once ROOT_PATH. 'vendor/firebase/php-jwt/src/JWT.php';
class Jwt{
public static $key = "qhyjwt";
/**
* @return array 设置token
*/
public static function getToken(){
$key = self::$key; //这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当 于加密中常用的 盐 salt
$token = [
"iss"=>"", //签发者 可以为空
"aud"=>"", //面象的用户,可以为空
"iat" => time(), //签发时间
// "nbf" => time()+100, //在什么时候jwt开始生效 (这里表示生成100秒后才生效)
"nbf" => time(), //在什么时候jwt开始生效 (这里表示生成100秒后才生效)
"exp" => time()+7200, //token 过期时间
"uid" => 2 //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对
];
$JWT = new \Firebase\JWT\JWT();
$jwt = $JWT::encode($token,$key,"HS256"); //根据参数生成了 token
// return json([
// "token"=>$jwt
// ]);
return ['code'=>200,'msg'=>'成功','data'=>$jwt];
}
/** 解密token
* @param $token 上面生成的token
* @return array
*/
public static function check($token){
$key = self::$key; //上一个方法中的 $key 本应该配置在 config文件中的
$JWT = new \Firebase\JWT\JWT();
$info = $JWT::decode($token,$key,array('HS256')); //解密jwt 老版
return ['code'=>200,'msg'=>'成功','data'=>$info];
}
如果老版本的jwt应该就对了,新的jwt可能直接check方法会报一个错误、
在check方法中引入Key文件,然后把老版本解密注释,用新版的解密就好了
require_once ROOT_PATH. 'vendor/firebase/php-jwt/src/Key.php';
try {
$checkArray = $JWT::decode($token, new \Firebase\JWT\Key($key, 'HS256')); //解密jwt 新版
}catch (ExpiredException $e){
$checkArray = $e->getMessage();
}
小伙伴们!这样就完成了哦! QQ学习交流群:842167453 ,欢迎小伙伴加入一起学习。