CheckTokenMiddleware.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. use Tymon\JWTAuth\Http\Middleware\BaseMiddleware;
  5. use Tymon\JWTAuth\Exceptions\TokenExpiredException;
  6. use Tymon\JWTAuth\Exceptions\JWTException;
  7. class CheckTokenMiddleware extends BaseMiddleware
  8. {
  9. /**
  10. * Handle an incoming request.
  11. *
  12. * @param \Illuminate\Http\Request $request
  13. * @param \Closure $next
  14. * @return mixed
  15. */
  16. public function handle($request, Closure $next)
  17. {
  18. // 检查此次请求中是否带有 token,如果没有则抛出异常。
  19. try{
  20. $this->checkForToken($request);
  21. }catch (\Exception $exception){
  22. return response()->json([
  23. 'code'=>40021,
  24. 'msg'=>'没有携带token',
  25. ]);
  26. }
  27. // 使用 try 包裹,以捕捉 token 过期所抛出的 TokenExpiredException 异常
  28. try {
  29. // 检测用户的登录状态,如果正常则通过
  30. if ($this->auth->parseToken()->authenticate()) {
  31. return $next($request);
  32. }
  33. return response()->json([
  34. 'code'=>50000,
  35. 'msg'=>'未登录',
  36. ]);
  37. } catch (TokenExpiredException $exception) {
  38. try {
  39. return response()->json([
  40. 'code'=>50000,
  41. 'msg'=>'token已过期',
  42. ]);
  43. } catch (JWTException $exception) {
  44. return response()->json([
  45. 'code'=>50000,
  46. 'msg'=>'token已失效,请重新登陆',
  47. ]);
  48. }
  49. }
  50. }
  51. }