laravel刷新token后怎样在控制器中获得新的token?

用的jwt 我在中间件中刷新的token 刷新后旧的token会被jwt加入黑名单 这个时候控制器中再用JWTAuth::getToken()获取token的话会提示The token has been blacklisted 这种情况怎么办?我怎样在控制器的index方法中获取这个新的token呢?

Route::group(['namespace' => 'Api'], function(){
    Route::middleware(['refresh'])->group(function () {
        Route::post('index', 'AuthController@index');
    });
});

中间件

$old_token = JWTAuth::getToken();
$token = JWTAuth::refresh($old_token);

AuthController

public function index() {
        $token = JWTAuth::getToken();
        $user = JWTAuth::parseToken()->authenticate();
        dd($user);
}
阅读 3.7k
1 个回答
$old_token = JWTAuth::getToken();
$token = JWTAuth::refresh($old_token);

JWTAuth::setToken($token)

不过还是建议你配置jwt为旧的Token设置一个可用时间(可能是30秒 或 1分钟)
因为有时会出现并发请求的情况,用户同时发出2个请求,但是它的token已经过期,这时第一个请求被接受,token刷新,但是当时同时发出的第2个请求就会出现验证失败的情况

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进