【问题标题】:JWT Token RefreshJWT 令牌刷新
【发布时间】:2016-06-25 05:05:02
【问题描述】:

您好,我在 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 之后返回给客户端?还是自动附加到请求的响应中?

【问题讨论】:

    标签: laravel laravel-5.1 jwt


    【解决方案1】:

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

    vendor/tymon/jwt-auth/src/Middleware/RefreshToken.php

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-03-05
      • 1970-01-01
      • 2021-04-06
      • 2017-10-11
      • 2016-10-14
      • 1970-01-01
      • 2018-09-29
      • 2021-06-03
      • 2020-12-05
      相关资源
      最近更新 更多