【问题标题】:Node.js one session per userNode.js 每个用户一个会话
【发布时间】:2014-02-21 11:35:10
【问题描述】:

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

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

【问题讨论】:

    标签: node.js passport.js


    【解决方案1】:

    您可以在用户登录时生成一个令牌并将其保存在您的数据库中以针对该用户。现在,对于每个请求,您都需要将此令牌发送到服务器。考虑以下场景:

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-25
      • 2013-01-17
      • 2015-12-26
      • 2019-10-19
      • 2012-06-02
      • 2018-12-27
      • 1970-01-01
      • 2021-04-09
      • 2020-05-07
      相关资源
      最近更新 更多