2015-11-07 73 views
1

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

回答

0

你不需要在数据库中存储JWT来做到这一点。只需在登录时向JWT注入一个唯一的基于时间的值(UUID或用户登录时间戳),并将该值保存在数据库中,并与用户对照。无论何时验证用户,请检查该值与数据库中的值是否相等。如果它们匹配,这意味着帐户尚未从任何其他设备记录,则可以继续。如果他们不这样做,请向用户发送适当的错误消息。