jwt 刷新 token 具体方案,见答案
看了还是不明白token到底该怎么刷新,前端发一个请求过来,我在RedirectIfAuthenticated
中间件里面监听是否过期,
public function handle($request, Closure $next, $guard = null)
{
Event::listen('tymon.jwt.expired', function () {
//这里该怎么写,调用刷新token方法,新的token又怎么反馈给前端,同时又能继续执行之前的请求呢
//return $this->errorResponse(401,'Token 已经过期, 请重新登录');
});
return $next($request);
}
那么后端该怎么处理,怎么控制在什么情况下刷新,刷新后怎么反馈给前端
找到方案了,建一个验证token的中间件,替代
jwt.auth
中间件,验证如果 token 过期则重新生成,并在 header 头中返回,客户端检查 header 有新的 Authorization 就替换原来的。 :star2: :sunny:`App/Http/Kernel.php
文件$routeMiddleware
中添加中间件'token.canrefresh' => \App\Http\Middleware\RefreshToken::class,
'middleware' => ['token.canrefresh']
中间件即可我们用过期的 token 访问,发现响应头中已经生成了新的 token :