我在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进行身份验证。但我不知道从哪里开始。
答案 0 :(得分:1)
好问题。
如果您使用的是Laravel JWT软件包,可以通过Refresh Tokens实现:
您可以轻松实现刷新令牌。您可以添加以下中间件:
protected $routeMiddleware = [
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
];
在您的步骤中:
Checks the Token in my storage with that one in the API
如果令牌已过期但刷新时间仍然有效,则会在标头中返回刷新令牌,假设您点击的路径位于jwt.refresh中间件中。
如果您需要任何其他帮助,请与我们联系。
完整文档: