header("token"); /** * @var UserService $service */ $service = app("UserService"); if (!$token) return response()->json([ 'message' => '没有认证,请前去认证', 'status_code' => 401, ]); try { $publicKey = Cache::remember("TOKEN_PUBLIC_KEY",7200,function (){ return file_get_contents(base_path().'/public.pem'); }); }catch (\Exception $e){ $response["status_code"] = 410; if (strpos($e->getMessage(),"No such file or directory")!==false)$response["message"] = "服务器异常,资源丢失"; else $response["message"] = "访问某些资源失败"; return response()->json($response); } try { $payload = JWT::decode($token, $publicKey, ['RS256']); $user = $service->getOrRefreshCache($payload->data->id,$payload->exp); if (!$service->verifySingleTag($user->id, $token)){ $response["status_code"] = 407; $response["message"] = "账号已在别处登录"; return response()->json($response); } }catch (ExpiredException $e){ $response["status_code"] = 401; $response["message"] = "token失效"; return response()->json($response); } catch (\Exception $e){ $response["status_code"] = 401; $response["message"] = "token非法"; return response()->json($response); } Auth::setUser($user); return $next($request); } }