JWT - 第二次刷新后的 TOKEN_EXPIRED
Posted
技术标签:
【中文标题】JWT - 第二次刷新后的 TOKEN_EXPIRED【英文标题】:JWT - TOKEN_EXPIRED after second refresh 【发布时间】:2019-06-17 01:45:33 【问题描述】:我正在使用 laravel 和 tymon/jwt-auth 开发一个 API 服务器。在测试环境中 TTL - 1 分钟,TTL_REFRESH - 2 分钟。不明白以下算法是如何工作的:
-
用户登录并收到令牌
令牌的 TTL 已过期,但 TTL_REFRESH 未过期。用户向服务器发送请求以刷新令牌
用户使用了新的token,但没有及时更新。令牌又过期了。
当用户第二次尝试刷新令牌时(第一次是在第 2 步),服务器发送
TOKEN_EXPIRED
如果在第 1 步和第 2 步之后尝试使用未过期的 TTL 刷新令牌,则会刷新令牌。但是如果我们在过期后刷新一次,第二次(带有过期令牌)服务器将发送到客户端TOKEN_EXPIRED
。
我的问题是为什么在 TTL 过期的第二次令牌更新后,服务器不刷新令牌而是发送TOKEN_EXPIRED
?
【问题讨论】:
【参考方案1】:我认为刷新令牌在第一次使用后已经失效
您必须使用新的刷新令牌来刷新您的 jwt 令牌并获取新的
【讨论】:
我只有一个令牌,没有 jwt-auth 提供的刷新令牌。当我刷新它时,我只是向服务器发送一个带有authorization: Bearer *token*
标头的请求。
你必须有刷新令牌才能刷新 jwt 令牌,我建议你阅读这个基于 slim php 框架的文档:oauth2.thephpleague.com以上是关于JWT - 第二次刷新后的 TOKEN_EXPIRED的主要内容,如果未能解决你的问题,请参考以下文章
DJANGO-GRAPHQL-JWT:我们如何知道刷新令牌发布后的年龄?