composer require firebase/php-jwt
use \Firebase\JWT\JWT; //导入JWT
//生成token'返回客户端 加密时候附带自己要加密的用户信息
public function Make_Token($userinfo)
{
//生成token
$key = "daixs";
//$key 这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当于加密中常用的 盐 salt
$token = [
"iss" => "", //签发者 可以为空
"aud" => "", //面象的用户,可以为空
"iat" => time(), //签发时间
"nbf" => time(), //在什么时候jwt开始生效 (这里表示生成100秒后才生效)
"exp" => time() + 7200, //token 过期时间
"uid" => $userinfo //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对
];
$jwt = JWT::encode($token, $key, "HS256"); //根据参数生成了 token
return $jwt;
}
//解密
public function getinfo()
{
$key = "daixs"; //上一个方法中的 $key 本应该配置在 config文件中的
$info = JWT::decode(input('token'), $key, ["HS256"]); //解密jwt
$arrinfo = $this->object_to_array($info);
// echo "<pre>";print_r($arrinfo['uid']);echo "<pre>";
// die();
$arrinfo['uid']['avatar'] = 'https://thirdqq.qlogo.cn/g?b=oidb&k=9XU9TvseKiagUpudgUXj3iaw&s=100';
$data = [
'code' => 20000,
'data' => $arrinfo['uid'],
'roles' => ['admin']
];
return json($data);
}