FooMiddleware.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 Hyperf\Context\Context;
  12. use Phper666\JWTAuth\JWT;
  13. class FooMiddleware implements MiddlewareInterface
  14. {
  15. protected ContainerInterface $container;
  16. protected RequestInterface $request;
  17. protected HttpResponse $response;
  18. protected JWT $JWT;
  19. public function __construct(ContainerInterface $container, HttpResponse $response, RequestInterface $request,Jwt $JWT)
  20. {
  21. $this->container = $container;
  22. $this->response = $response;
  23. $this->request = $request;
  24. $this->JWT = $JWT;
  25. }
  26. public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  27. {
  28. $header = $request->getHeaders();
  29. try {
  30. if($header && isset($header['token']) && $header['token'][0]!='null' && $header['token'][0]!='' && isset($header['token'][0])){
  31. var_dump("token类型:",$header['token'][0]);
  32. $ver = $this->JWT->getClaimsByToken($header['token'][0]);
  33. $tokenTime = $this->JWT->getTokenDynamicCacheTime($header['token'][0]);
  34. if($tokenTime==0){
  35. return $this->response->json(
  36. [
  37. 'code' => -1,
  38. 'data' => [],
  39. 'message' => 'token无效,请重新登录',
  40. ]
  41. );
  42. }
  43. // var_dump("中间件:",$ver);
  44. Context::set("UserId",$ver['uid']);
  45. Context::set("TypeId",$ver['type_id']);
  46. if ($ver) {
  47. return $handler->handle($request);
  48. }
  49. }else{
  50. return $this->response->json(
  51. [
  52. 'code' => -1,
  53. 'data' => [],
  54. 'message' => 'token无效,请重新登录',
  55. ]
  56. );
  57. }
  58. }catch (\Exception $e){
  59. var_dump("错误消息1:",$e->getMessage(),$e->getCode());
  60. return $this->response->json(
  61. [
  62. 'code' => $e->getCode(),
  63. 'data' => [],
  64. 'message' => $e->getMessage(),
  65. ]
  66. );
  67. }
  68. return false;
  69. }
  70. }