JWTAuthMiddleware.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4. * This is my open source code, please do not use it for commercial applications.
  5. * For the full copyright and license information,
  6. * please view the LICENSE file that was distributed with this source code
  7. *
  8. * @author Yuandong<837215079@qq.com>
  9. * @link https://github.com/gzydong/hyperf-chat
  10. */
  11. namespace App\Middleware;
  12. use Hyperf\HttpServer\Contract\RequestInterface;
  13. use Hyperf\HttpServer\Contract\ResponseInterface as HttpResponse;
  14. use Psr\Http\Message\ResponseInterface;
  15. use Psr\Http\Message\ServerRequestInterface;
  16. use Psr\Http\Server\MiddlewareInterface;
  17. use Psr\Http\Server\RequestHandlerInterface;
  18. /**
  19. * Http Token 授权验证中间件
  20. *
  21. * @package App\Middleware
  22. */
  23. class JWTAuthMiddleware implements MiddlewareInterface
  24. {
  25. /**
  26. * @var RequestInterface
  27. */
  28. protected $request;
  29. /**
  30. * @var HttpResponse
  31. */
  32. protected $response;
  33. /**
  34. * 授权验证守卫
  35. *
  36. * @var string
  37. */
  38. private $guard = 'jwt';
  39. public function __construct(HttpResponse $response, RequestInterface $request)
  40. {
  41. $this->response = $response;
  42. $this->request = $request;
  43. }
  44. public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  45. {
  46. if (auth($this->guard)->guest()) {
  47. return $this->response->withStatus(401)->json([
  48. 'code' => 401,
  49. 'message' => 'Token authentication does not pass !',
  50. ]);
  51. }
  52. return $handler->handle($request);
  53. }
  54. }