如何使用JWT通过API进行身份验证


How to keep authenticated with an API using 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进行身份验证。但我不知道从哪里开始。

好问题。

这可以通过刷新令牌来实现,如果你使用的是Laravel JWT包:

此处

您可以真正轻松地使用刷新代币。您可以添加一个中间件,如:

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

在您的步骤中:

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

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

如果你需要任何额外的帮助,请告诉我。

此处的完整文档:

单据