如何使用JWT

时间:2016-07-28 08:07:42

标签: php laravel laravel-5.2 jwt

我在Laravel5中编写了一个与API通信的应用程序,即使我的JWT令牌过期,我怎样才能继续使用API​​进行身份验证。登录凭据存储在环境文件中。我第一次登录并将令牌保存到会话中。然后我有一个令牌,但它可以过期并返回带有消息

的401
{
    "message": "Token expired"
}

如果用户没有注意到应用程序必须重新进行身份验证,我怎样才能检测到这种情况,我是否可以使用中间件来捕获带有Token过期消息的401,然后再次进行身份验证并存储新令牌?

流程是这样的。

User requests url on my application
->
My application asks for data from the API
->
Checks the Token in my storage with that one in the API
->
Returns 401 with message Token expired
->
Requests a new Token
->
Returns data from API to user.

我必须这样做,我的用户不应该注意到它,我不想在每次请求时对api进行身份验证。但我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

好问题。

如果您使用的是Laravel JWT软件包,可以通过Refresh Tokens实现:

Here

您可以轻松实现刷新令牌。您可以添加以下中间件:

protected $routeMiddleware = [
    'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
];

在您的步骤中:

Checks the Token in my storage with that one in the API

如果令牌已过期但刷新时间仍然有效,则会在标头中返回刷新令牌,假设您点击的路径位于jwt.refresh中间件中。

如果您需要任何其他帮助,请与我们联系。

完整文档:

Docs