我目前正在使用json web令牌对服务器上的用户进行身份验证。现在我希望用户在任何给定时间只能有一个活动登录。正如像this这样的stackoverflow的其他一些答案中提到的,这可以通过存储在数据库表中生成的json Web令牌并在每次用户登录服务器时更新此令牌来轻松完成。无论何时对用户进行身份验证,我所要做的就是检查数据库中的令牌。我在想另一种方法。由于我使用的是json web令牌,我可以为不同的用户使用不同的秘密,并将它们存储在数据库中,而不是存储整个令牌。这些秘密将在用户登录时更新。因此,在任何时候只有一个秘密,因为只有一个令牌可以为任何秘密的用户解码(当然在这种情况下),只有一个登录将是活动的。我想知道这两种方法中的哪一种更好。是否可以为不同的用户提供不同的秘密?
答案 0 :(得分:0)
您无需将JWT存储在DB中即可。只需在登录时向JWT注入一个唯一的基于时间的值(UUID或用户登录时间戳),并将该值保存在DB中以防止用户使用。无论何时对用户进行身份验证,都要检查该值与DB中的值是否相等。如果它们匹配,这意味着帐户尚未从任何其他设备记录,则可以继续。如果他们不这样做,请向用户发送相应的错误消息。