这里给出了一个普通web应用程序的例子。
传统上,我们使用会话并设置超时=30分钟。如果会话到期,我们将重定向用户登录。(当用户/浏览器与Web应用程序交互时,过期时间将延长)
使用JWT,如何实现这一点?
我知道一些关于“令牌刷新”的东西,当短期令牌到期时,它会使用refresh-token刷新一个新的令牌。
但看起来它并不关心用户是否与网络应用程序交互。因此,只要刷新令牌有效,浏览器总是可以获得一个新的短寿命JWT。
所以问题是:如果用户使用JWT在设定的时间段内不活动,如何延长令牌到期时间?
如果用户处于活动状态,则在用户每次进入web应用程序时以及每一段时间(例如1小时)发布一个新的JWT
如果用户不是活动的,但浏览器是打开的,它可以在后台向服务器请求新的JWT。必须在到期时间之前请求令牌,然后在localStorage或cookie中替换令牌。这种技术也可以应用于独立的应用程序
如果浏览器无法请求新令牌(已关闭,不活动等),则该令牌将过期,并且您可以以某种方式重定向用户登录,如果服务器会话过期
检查此JWT(JSON Web Token)自动延长到期时间
当用户与您的服务器交互时,您的服务器可以决定发出另一个具有新到期时间的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: 将此中间件添加到您的设置文件中:
我正在尝试通过刷新令牌和JWT在. NET Core 2.1中实现基于令牌的身份验证。 这就是我实施JWT令牌的方式: 启动.cs 令牌生成: 我正在给他回复正确的数值。 但是一分钟后,我在 Postman 中为授权设置了相同的令牌,它可以工作。如果令牌已过期,则不应过期。 我使用不记名令牌作为认证。 我做错了什么?需要方向。