AuthTokenByMaybe.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\Http\Middleware;
  3. use Auth;
  4. use Closure;
  5. use phpDocumentor\Reflection\DocBlock\Tags\Var_;
  6. use Tymon\JWTAuth\Exceptions\JWTException;
  7. use Tymon\JWTAuth\Http\Middleware\BaseMiddleware;
  8. use Tymon\JWTAuth\Exceptions\TokenExpiredException;
  9. use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
  10. class AuthTokenByMaybe extends BaseMiddleware
  11. {
  12. /**
  13. * @author fatty
  14. * @date 2019/3/11
  15. * @param $request
  16. * @param Closure $next
  17. * @return mixed
  18. * @description
  19. * 不强制认证访问令牌接口
  20. */
  21. public function handle($request, Closure $next)
  22. {
  23. try {
  24. // 判断是否存在token
  25. $this->checkForToken($request);
  26. try {
  27. // 验证token
  28. if ($result = $this->auth->parseToken()->authenticate()) {
  29. return $next($request);
  30. }
  31. return showJson(102, '请登录');
  32. //throw new UnauthorizedHttpException('jwt-auth', '未登录');
  33. } catch (TokenExpiredException $exception) {
  34. $token = $this->auth->refresh();
  35. try {
  36. Auth::guard('api')->onceUsingId($this->auth->manager()->getPayloadFactory()->buildClaimsCollection()->toPlainArray()['sub']);
  37. } catch (JWTException $exception) {
  38. return showJson(102, $exception->getMessage());
  39. //throw new UnauthorizedHttpException('jwt-auth', $exception->getMessage());
  40. }
  41. }
  42. return showJson(103, '您的登录信息已过期,请重新登录!', ['token' => $token]);
  43. } catch (\Exception $exception) {
  44. return $next($request);
  45. // return showJson(102, $exception->getMessage());
  46. }
  47. }
  48. }