第一 账号密码登录 获取token
JWT需要composer安装下,然后调用
$jwt_config = [
'iss' => config('jwt.iss'), //签发者 可选
'aud' => config('jwt.iss'), //接收该JWT的一方,可选
'iat' => time(), //签发时间
'nbf' => time() , //(Not Before):某个时间点后才能访问,比如设置time+30,表示当前时间30秒后才能使用
'exp' => time()+7200, //过期时间,这里设置2个小时
'data' => [ //自定义信息,不要定义敏感信息
'user_id' => $user_data['id']
]
];
$token=JWT::encode($jwt_config,config('jwt.key'),'HS256');
第二 解密token
//检测token
public function check_token($token){
try {
JWT::$leeway = 60;//当前时间减去60,把时间留点余地
$decoded = JWT::decode($token, config('jwt.key'), ['HS256']); //HS256方式,这里要和签发的时候对应
$arr = (array)$decoded;
$result=['code'=>200,'msg'=>'OK','user_id'=>$arr['data']->user_id];
} catch(SignatureInvalidException $e) { //签名不正确
$result=['code'=>400,'msg'=>$e->getMessage()];
}catch(BeforeValidException $e) { // 签名在某个时间点之后才能用
$result=['code'=>400,'msg'=>$e->getMessage()];
}catch(ExpiredException $e) { // token过期
$result=['code'=>400,'msg'=>$e->getMessage()];
}catch(\Exception $e) { //其他错误
$result=['code'=>400,'msg'=>$e->getMessage()];
}
return $result;
}
这样就能得到用户id