Node.js每个用户一个会话

时间:2014-01-29 15:06:20

标签: node.js passport.js

如何防止我的用户同时从两台设备登录我的系统?因此,如果用户从计算机登录,当他从不同的计算机登录时,会话首先自动关闭(不需要实时)。

我使用node.js,express.js,mongoose,passport,connect-mongo(在数据库中存储会话)。

1 个答案:

答案 0 :(得分:8)

您可以在用户登录时生成令牌,并将其保存在数据库中,以防止该用户。现在有了每个请求,您需要将此令牌发送到服务器。请考虑以下情形:

用户A从计算机A登录并生成令牌123并保存在数据库中。现在,每当用户A向服务器发送请求时,它首先检查有效会话,然后从数据库加载用户令牌以检查其是否有效。

现在,用户A从计算机B登录到网站,并且将令牌456分配给用户并在数据库中被覆盖。下次当用户A从计算机A发送请求时,服务器检查有效会话,当它从数据库获取令牌时,存在不匹配,表明用户已从其他地方登录,因此当前会话无效。