1.下载扩展
composer require firebase/php-jwt
2. 封装生成TOKEN,解密TOKEN的方法
USE 引入刚刚下载的类
use Firebase\JWT\JWT;
封装?
//生成TOKEN
public function getToken($user_id)
{
$key = 'xiaofu';
$token = array(
"iss"=>$key, //签发人 可空
"aud"=>'', //受众 可空
"iat"=>time(), //签发时间
"nbf"=>time()-1, //生效时间 (立即生效)
"exp"=>time()+1440, //有效期
"data"=>[
'user_id'=>$user_id,
]
);
$jwt = JWT::encode($token,$key,"HS256");
return $jwt;
}
//解密TOKEN
public function getUserId($token)
{
$key = '8848233';
try {
JWT::$leeway = 60;//当前时间减去60,把时间留点余地
$decoded = JWT::decode($token, $key, array('HS256')); //HS256方式,这里要和签发的时候对应
$arr = (array)$decoded;
$res['data'] = $arr['data'];
return $arr['data']->user_id; //解析出来的id 在数组里面的对象
} catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确
return null;
} catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用
return null;
} catch (\Firebase\JWT\ExpiredException $e) { // token过期
return null;
} catch (\Exception $e) { //其他错误
return null;
}
}
|