当前位置: 首页 > 知识库问答 >
问题:

如果用户在设定的时间段内使用 JWT 不活动,如何延长令牌到期时间?

宋臻
2023-03-14

这里给出了一个普通web应用程序的例子。

传统上,我们使用会话并设置超时=30分钟。如果会话到期,我们将重定向用户登录。(当用户/浏览器与Web应用程序交互时,过期时间将延长)

使用JWT,如何实现这一点?

我知道一些关于“令牌刷新”的东西,当短期令牌到期时,它会使用refresh-token刷新一个新的令牌。

但看起来它并不关心用户是否与网络应用程序交互。因此,只要刷新令牌有效,浏览器总是可以获得一个新的短寿命JWT。

所以问题是:如果用户使用JWT在设定的时间段内不活动,如何延长令牌到期时间?

共有2个答案

孔扬
2023-03-14

如果用户处于活动状态,则在用户每次进入web应用程序时以及每一段时间(例如1小时)发布一个新的JWT

如果用户不是活动的,但浏览器是打开的,它可以在后台向服务器请求新的JWT。必须在到期时间之前请求令牌,然后在localStorage或cookie中替换令牌。这种技术也可以应用于独立的应用程序

如果浏览器无法请求新令牌(已关闭,不活动等),则该令牌将过期,并且您可以以某种方式重定向用户登录,如果服务器会话过期

检查此JWT(JSON Web Token)自动延长到期时间

谯嘉木
2023-03-14

当用户与您的服务器交互时,您的服务器可以决定发出另一个具有新到期时间的JWT(不是在每次请求时,而是例如在当前JWT到期时间前5分钟)。如果客户端收到一个新的JWT,那么它会替换旧的。

当用户什么都不做时,不会发出新的JWT,JWT将在超时后失效。

 类似资料:
  • 我使用JWT对用户进行身份验证。我可以看到JWT生成的两种令牌(向后端发出请求的访问令牌和刷新令牌)。所以,我的问题是,什么时候该注销用户?访问令牌到期的时间还是刷新令牌到期的日期 根据用户的活动或非活动状态,使用刷新令牌endpoint获取新访问令牌的更好方法是什么

  • 问题内容: 我使用Django REST框架JWT Auth进行会话创建和权限,唯一的问题是:登录时以及令牌过期后,除非再次登录,否则我无法继续执行所需的操作。而且我 还不完全了解为其他设置提供的文档 。 因此,谁能解释一种动态创建(和刷新)令牌(遵循最佳实践)的方法,以便在登录后继续进行操作。 PS:我在前端使用angular 2,并将令牌插入Http request标头中。谢谢。 问题答案:

  • 那么有人能告诉我如何避免这种情况吗?

  • 问题内容: 我想对我们的新REST API实施基于JWT的身份验证。但是,由于在令牌中设置了有效期,是否可以自动延长有效期?我不希望用户在此期间正在使用该应用程序的情况下,每隔X分钟登录一次。那将是巨大的用户体验失败。 但是,延长有效期将创建一个新令牌(旧令牌在过期之前仍然有效)。在每个请求之后生成一个新令牌对我来说听起来很愚蠢。当多个令牌同时有效时,听起来像一个安全问题。当然,我可以使用黑名单来

  • 问题内容: django的用户模型有一个字段,如果所有用户每次都离开站点都要注销,那么该字段很好,但是如果没有,该怎么办? 如何跟踪从未注销的用户及其在网站上的活动的时间? 问题答案: 您需要在用户个人资料(或自定义用户模型)中包含该字段。该字段将根据每个请求进行更新。为此,您需要自定义中间件: 个人资料/middleware.py: 将此中间件添加到您的设置文件中:

  • 我们希望使用SpringOAuth2JWT令牌支持。我们的架构如下:Spring只提供了一个REST接口,前端由AngularJS构建,AngularJS查询Spring REST接口。出于授权目的,我们的前端团队希望使用JWT。因此,我查看了SpringOAuth2JWT支持,但仍然不知道如何与前端讨论JWT令牌。在阅读了一些教程后,我实现了以下内容: 我不确定工作流程如何。我猜:前端访问/oa