[ 'userId' =>$userId ], 'iss' => 'qwueiqnyuqjezchiw', // 随机 'aud' => '', 'iat' =>time() ]; return 'Bear' . \Firebase\JWT\JWT::encode($payload, $key, 'HS256'); } /** * 后端生成token * @param $userId // 用户id * @return string */ function generateToken($userId) { //获取当前时间戳 $currentTime = time(); $data = array( "iss" => 'coinwerqwerasdf', //签发者 可以为空 "aud" => '', //面象的用户,可以为空 "iat" => $currentTime, //签发时间 "nbf" => $currentTime, //立马生效 "exp" => $currentTime + 3600*24, //token 过期时间 1天 "data" => [ //记录的userid的信息 'user_id' => $userId, ] ); //生成token $token = \Firebase\JWT\JWT::encode($data, env('ENCRYPT.ADMINSALT'), "HS256"); return 'Bear'.$token; } /** * 检查token有效性 * @param $token * @return array|int[] */ public function chekToken($token) { $status=array("code"=>2); if(!$token){ $status['msg']="token缺失"; return $status; } $len=4; $bear=substr($token,0,6); if($bear=='Bearer'){ $len=6; } $token = trim(substr_replace($token,'',0,$len)," "); try { \Firebase\JWT\JWT::$leeway = 60;//当前时间减去60 $decoded = \Firebase\JWT\JWT::decode($token, new \Firebase\JWT\Key(env('ENCRYPT.ADMINSALT'), 'HS256')); $arr = (array)$decoded; $res['code']=1; $res['data']=$arr['data']; return $res; } catch(\Firebase\JWT\SignatureInvalidException $e) { //签名不正确 $status['msg']="token签名不正确"; return $status; }catch(\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用 $status['msg']="token失效"; return $status; }catch(\Firebase\JWT\ExpiredException $e) { // token过期 $status['msg']="token失效"; return $status; }catch(\Exception $e) { //其他错误 $status['msg']="未知错误"; return $status; } } }