尝试验证时 JWT 令牌已过期?

Expired JWT Token when trying to authenticate?

我是第一次使用 JWT,我发现很难完全理解它的工作方式,每次我找到 simethong 的解决方案时,都会弹出另一件事。

我在发送正确的用户名和密码之前尝试进行身份验证,当我使用 Postman 时收到一个令牌。

我离开项目几个小时又回来了,现在当我尝试进行身份验证时出现此错误:

{
    "code": 401,
    "message": "Expired JWT Token"
}

我不知道怎么解决,因为我不知道我可能会遇到这样的问题。

如有任何帮助,我们将不胜感激。

它是这样的:

您发出第一个 api 请求,传递您的凭据,获取令牌并将其存储在某个地方。

之后,您应该在每个其他请求中传递该令牌(通过 "Bearer" header 字段),以便服务器可以识别您。

但该令牌不会永远有效。一段时间后 (TTL) 它会过期,你会收到这样的消息。然后你必须重复认证才能获得新的令牌。

所以只需重复您在开始时发出的请求,再次传递凭据,再次收集并存储新令牌并像以前一样继续使用它。

如果您正在使用 LexikJWTAuthenticationBundle,您可以在 lexik_jwt_authentication.yaml 中为 JWT 在 config/packages 中设置 TimeToLive

token_ttl: 属性用于设置令牌的 TimeToLive 秒数(例如,604800 等于 7 天)。