JWT令牌刷新

时间:2016-03-10 11:22:54

标签: laravel laravel-5.1 jwt

您好我在laravel 5应用程序中使用JWT进行身份验证。该应用程序当前驻留在实时服务器上,并具有其他应用程序可以连接的多个API。

目前我正在构建一个连接到其中一些API的移动应用程序,正如您在用户登录时所了解的移动应用程序一样,我希望它们在很长一段时间内保持登录状态。

为了做到这一点,我发现我需要刷新JWT,当它过期时,显然这将生成一个新的令牌并将旧令牌列入黑名单。

我使用的是Tymon/JWT的最新版本,其中包含一个新版本 blacklist_grace_period功能。这允许我设置刷新令牌和旧列表被列入黑名单的延迟。

我现在的问题是,在我的路线档案中有以下内容:

Route::group(['domain' => 'admin.website'.(App::environment('production') ? '.com' : '.dev'), 'prefix' => '/api/v1/manager/', 'namespace' => 'App\Http\BackEnd\Controllers', 'middleware' => ['before' => 'jwt.auth', 'after' => 'jwt.refresh', 'acl'], 'is' => 'manager'], function() {
    /** Manager Resource Routes */
    Route::resource('events', 'EventManagerController');
});

如何在jwt.refresh之后获取新生成的令牌并返回客户端?或者是自动附加到请求的响应?

1 个答案:

答案 0 :(得分:0)

看看你正在使用的中间件:

供应商/ tymon / JWT-AUTH / SRC /中间件/ RefreshToken.php

首先它解析令牌,然后刷新它:

try {
    $newToken = $this->auth->setRequest($request)->parseToken()->refresh();
}

然后将其添加到响应的标题中:

$response->headers->set('Authorization', 'Bearer '.$newToken);

return $response;

所以,是的,这确实是新刷新的令牌被添加到响应中的地方。