12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- namespace App\Http\Middleware;
- use Illuminate\Support\Facades\Auth;
- use Closure;
- use Tymon\JWTAuth\Exceptions\JWTException;
- use Tymon\JWTAuth\Http\Middleware\BaseMiddleware;
- use Tymon\JWTAuth\Exceptions\TokenExpiredException;
- class AdminRefreshToken extends BaseMiddleware
- {
- /**
- * Handle an incoming request.
- *
- * @param \Illuminate\Http\Request $request
- * @param \Closure $next
- * @return mixed
- */
- public function handle($request, Closure $next)
- {
- // 检查此次请求中是否带有 token,如果没有则抛出异常。
- $this->checkForToken($request);
- // 使用 try 包裹,以捕捉 token 过期所抛出的 TokenExpiredException 异常
- // // 检测用户的登录状态,如果正常则通过
- if (Auth::guard('admin')->check()) {
- $admin_id = Auth::guard('admin')->payload()['sub'];
- $time = Auth::guard('admin')->payload()['exp'];
- //var_dump(Auth::guard('admin')->payload()['nbf'],$time);exit;
- //刷新Token
- if(($time - time()) < 60*60 && ($time - time()) > 0){
- $token = Auth::guard('admin')->refresh();
- if($token){
- $request->headers->set('Authorization', 'Bearer '.$token);
- }else{
- return response()->json(['error_code'=>401,'msg'=>'token有误,请重新登录'],401);
- }
- // 在响应头中返回新的 token
- $respone = $next($request);
- if(isset($token) && $token){
- $respone->headers->set('Authorization', 'Bearer '.$token);
- }
- return $respone;
- }
- //token通过验证 执行下一补操作
- return $next($request);
- }
- return response()->json(['error_code'=>401,'msg'=>'未登录,请登录'],401);
- }
- }
|