Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在nodejs中使用json web令牌一次只允许登录一次_Node.js_Authentication_Jwt_Json Web Token - Fatal编程技术网

Node.js 在nodejs中使用json web令牌一次只允许登录一次

Node.js 在nodejs中使用json web令牌一次只允许登录一次,node.js,authentication,jwt,json-web-token,Node.js,Authentication,Jwt,Json Web Token,我目前正在使用json web令牌对服务器上的用户进行身份验证。现在我希望用户在任何给定的时间只有一个活动登录。正如stackoverflow上的一些其他答案所述,这可以通过将生成的json web令牌存储在数据库表中并在用户每次登录服务器时更新该令牌来轻松实现。每当对用户进行身份验证时,我所要做的就是检查数据库中的令牌。我在考虑另一种方法。因为我使用的是json web令牌,所以我可以为不同的用户使用不同的秘密并将它们存储在数据库中,而不是存储整个令牌。每当用户登录时,这些机密都将更新。因此,

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

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