container = $container; $this->response = $response; $this->request = $request; $this->JWT = $JWT; } public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { $header = $request->getHeaders(); try { if($header && isset($header['token']) && $header['token'][0]!='null' && $header['token'][0]!='' && isset($header['token'][0])){ // var_dump("token类型:",$header['token'][0]); $ver = $this->JWT->getClaimsByToken($header['token'][0]); $tokenTime = $this->JWT->getTokenDynamicCacheTime($header['token'][0]); $this->JWT->verifyToken($header['token'][0]); if($tokenTime==0){ return $this->response->json( [ 'code' => -1, 'data' => [], 'message' => 'token无效,请重新登录', ] ); } if(isset($header['userurl']) && $header['userurl'] && $header['userurl'][0]){ $origin = $header['userurl'][0]; $data = [ 'website_url'=>$origin ]; $result = $this->websiteServiceClient->getWebsiteId($data); if(!isset($result['data']['id']) || !$result['data']['id']){ return $this->response->json( [ 'code' => -1, 'data' => [], 'message' => '网站不存在...', ] ); } Context::set("SiteId",$result['data']['id']); if($ver['type_id']!=10000){ $userInfo = $this->userController->getUserInfo($ver['uid']); if($userInfo['code'] == 200 && isset($userInfo['data']) && !empty($userInfo['data']['sszq'])){ $sszq = $userInfo['data']['sszq']; //组id $authData = [ 'id' => $sszq, 'SiteId' => $result['data']['id'] ]; // 调用 LoginController 中的 checkUserAuth 方法 $resultAuth = $this->loginController->checkUserAuth($authData); if (!$resultAuth) { // 如果没有权限,返回错误响应 return $this->response->json( [ 'code' => -1, 'data' => [], 'message' => '没有权限登陆此网站', ] ); } }else{ return $this->response->json( [ 'code' => -1, 'data' => [], 'message' => '用户没有群组', ] ); } } } // var_dump("中间件:",$ver); Context::set("UserId",$ver['uid']); Context::set("TypeId",$ver['type_id']); if ($ver) { return $handler->handle($request); } }else{ return $this->response->json( [ 'code' => -1, 'data' => [], 'message' => 'token无效,请重新登录', ] ); } }catch (\Exception $e){ var_dump("错误消息1:",$e->getMessage(),$e->getCode()); return $this->response->json( [ 'code' => $e->getCode(), 'data' => [], 'message' => $e->getMessage(), ] ); } return false; } }