FooMiddleware.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Middleware\Auth;
  4. use Hyperf\HttpServer\Contract\RequestInterface;
  5. use Hyperf\HttpServer\Contract\ResponseInterface as HttpResponse;
  6. use Psr\Container\ContainerInterface;
  7. use Psr\Http\Message\ResponseInterface;
  8. use Psr\Http\Message\ServerRequestInterface;
  9. use Psr\Http\Server\MiddlewareInterface;
  10. use Psr\Http\Server\RequestHandlerInterface;
  11. use \Phper666\JWTAuth\JWT;
  12. class FooMiddleware implements MiddlewareInterface
  13. {
  14. protected ContainerInterface $container;
  15. protected RequestInterface $request;
  16. protected HttpResponse $response;
  17. protected JWT $JWT;
  18. public function __construct(ContainerInterface $container, HttpResponse $response, RequestInterface $request,Jwt $JWT)
  19. {
  20. $this->container = $container;
  21. $this->response = $response;
  22. $this->request = $request;
  23. $this->JWT = $JWT;
  24. }
  25. public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  26. {
  27. $header = $request->getHeaders();
  28. $ver = $this->JWT->verifyTokenAndScene('default', $header['token'][0]);
  29. // 根据具体业务判断逻辑走向,这里假设用户携带的token有效
  30. $isValidToken = $ver;
  31. if ($isValidToken) {
  32. return $handler->handle($request);
  33. }
  34. return $this->response->json(
  35. [
  36. 'code' => -1,
  37. 'data' => [],
  38. 'message' => '中间件验证token无效,阻止继续向下执行',
  39. ]
  40. );
  41. }
  42. }