尝试进行身份验证时 JWT 令牌过期?
Posted
技术标签:
【中文标题】尝试进行身份验证时 JWT 令牌过期?【英文标题】:Expired JWT Token when trying to authenticate? 【发布时间】:2019-12-05 19:48:06 【问题描述】:我是第一次使用 JWT,我很难理解它的完整工作方式,每次我找到 simethong 的解决方案时,都会弹出另一件事。
我在发送正确的用户名和密码之前尝试进行身份验证,当我使用 Postman 时,我得到了一个令牌。
我离开项目几个小时又回来了,现在当我尝试进行身份验证时,我收到了这个错误:
"code": 401,
"message": "Expired JWT Token"
我不知道如何解决,因为我不知道我可能会遇到这样的问题。
任何帮助将不胜感激。
【问题讨论】:
如果您使用的是 API 并且我理解正确,那么这是不言自明的。您的令牌已过期,JWT 通常会在他们的iat
一个小时后这样做。您需要重新生成一个新令牌并使用它进行请求。
是的,您的令牌已过期,需要重新获取。
【参考方案1】:
是这样的:
您发出第一个 api 请求,传递您的凭据,获取令牌并将其存储在某处。
之后,您应该将该令牌(通过“Bearer”标头字段)与所有其他请求一起传递,以便服务器可以识别您。
但该令牌不会永远有效。一段时间后(TTL)它会过期,你会收到这样的消息。然后你必须重复认证才能获得新的令牌。
所以只需重复您在开始时提出的请求,再次传递凭据,再次收集和存储新令牌并像以前一样继续使用它。
【讨论】:
【参考方案2】:如果您使用LexikJWTAuthenticationBundle
,您可以在配置/包中的lexik_jwt_authentication.yaml
中为JWT 设置TimeToLive
。
token_ttl:
属性用于以秒为单位设置令牌的TimeToLive
(例如,604800 等于 7 天)。
【讨论】:
以上是关于尝试进行身份验证时 JWT 令牌过期?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 JWT 不记名身份验证在令牌说 5 分钟后将令牌识别为过期?