有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我们应该在每次登录后删除或使jwt无效吗?

我正在尝试实现注册和登录功能,我正在使用SpringBoot和java堆栈。我正在学习这个教程(你们不必点击它,只需把它放在这里作为参考和这个问题的完整性)

Spring Security MySQL JWT Tutorial - Grokonez

现在我有了一个注册和登录的端点。在注册并将用户添加到数据库之后,我正在登录。对于登录端点,我将获得一个jwt令牌。使用此令牌,我可以访问受限资源。到目前为止,一切都很棒。现在,当我再次点击登录端点时,我得到了另一个令牌

这就是我的困境所在。因为我有两个令牌,所以我基本上可以使用两个令牌登录。当然,这两种代币都有一个到期日(比如一天)。但就良好实践而言,我们是否应该废除旧令牌,即在任何给定的时间点,任何用户都只能使用一个令牌登录到我们的系统

如果是这样的话,这是否意味着用户不能在笔记本电脑和手机等设备上同时使用我们的应用程序?那么,在这种情况下,active标记的上限是多少

我听说了一些关于刷新令牌等的事情,但我只想保持简单,我可以只使用一个称为访问令牌的令牌

所以,如果您认为我应该使jwt无效,并且在任何给定的时间点上每个用户只保留一个活动的jwt,我将如何做到这一点?在db中存储JWT并做些什么


共 (1) 个答案

  1. # 1 楼答案

    如果要将JWT令牌存储在数据库中,那么就没有必要使用JWT令牌。因为,拥有自包含的签名令牌的主要原因是为了避免用户访问应用程序时进行数据库验证

    我可以建议以下避免创建多个活动令牌的方法

    您可以在数据库中保留JWT令牌创建时间(last),然后在用户登录应用程序时交叉检查上次创建的时间(与当前时间比较)