2

我目前正在使用 json Web 令牌对服务器上的用户进行身份验证。现在我希望用户在任何给定时间都应该只有一个活动登录。正如在stackoverflow上的一些其他答案中提到的那样,这可以通过将生成的 json Web 令牌存储在数据库表中并在每次用户登录服务器时更新此令牌来轻松完成。每当对用户进行身份验证时,我所要做的就是检查数据库中的令牌。我正在考虑另一种方法。由于我使用的是 json Web 令牌,因此我可以为不同的用户使用不同的秘密并将它们存储在数据库中,而不是存储整个令牌。每当用户登录时,这些秘密都会更新。因此,在任何时候都只有一个秘密,并且由于任何秘密的用户只能解码一个令牌(当然在这种情况下),因此只有一个登录将处于活动状态。我想知道这两种方法中哪一种更好。对不同的用户有不同的秘密可以吗?

4

1 回答 1

1

您无需将 JWT 存储在 DB 中即可。只需在登录时向 JWT 注入一个唯一的基于时间的值(UUID 或用户登录时间戳),并将该值保存在数据库中针对用户。每当对用户进行身份验证时,请检查该值与 DB 中的值是否相等。如果它们匹配,这意味着帐户尚未从任何其他设备登录,您可以继续。如果没有,请向用户发送适当的错误消息。

于 2016-11-03T06:44:48.150 回答