<?php declare(strict_types=1); namespace App\Middleware\Auth; use Hyperf\Di\Annotation\Inject; use Hyperf\HttpServer\Contract\RequestInterface; use Hyperf\HttpServer\Contract\ResponseInterface as HttpResponse; use Psr\Container\ContainerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; use Hyperf\Context\Context; use App\JsonRpc\WebsiteServiceInterface; use Phper666\JWTAuth\JWT; class WebMiddleware implements MiddlewareInterface { protected ContainerInterface $container; protected RequestInterface $request; protected HttpResponse $response; protected JWT $JWT; /** * @var WebsiteServiceInterface */ #[Inject] private $websiteServiceClient; public function __construct(ContainerInterface $container, HttpResponse $response, RequestInterface $request,Jwt $JWT) { $this->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['origin']) && $header['origin'][0]!='null' && isset($header['origin'][0])){ $origin = $header['origin'][0]; $logindevice = explode("//", $origin); $data = [ 'website_url'=>$logindevice[1] ]; // var_dump("222:",$data); $result = $this->websiteServiceClient->getWebsiteId($data); // var_dump("3333333:",$result); if(!isset($result['data']['id']) || !$result['data']['id']){ return $this->response->json( [ 'code' => -1, 'data' => [], 'message' => '网站不存在', ] ); } // var_dump("获取站点id:",$result); Context::set("SiteId",$result['data']['id']); if ($result) { return $handler->handle($request); } }else{ return $this->response->json( [ 'code' => -1, 'data' => [], 'message' => 'origin:必填', ] ); } }catch (\Exception $e){ var_dump("错误消息:",$e->getMessage(),$e->getCode()); return $this->response->json( [ 'code' => $e->getCode(), 'data' => [], 'message' => '网址必填:'.$e->getMessage(), ] ); } return false; } }