限制PassportJS上每个用户的并发会话数

时间:2015-05-28 14:41:27

标签: node.js session login passport.js

作为标题sais,我需要为Web应用设置每个用户的并发会话的上限,以防止帐户共享。

我在passportjs(在节点平台上)使用本地策略进行身份验证。

这样做的最佳做法是什么?是否计算了登录请求的数量(创建会话的位置)?

2 个答案:

答案 0 :(得分:1)

对于每次成功登录,您都需要在数据库中维护会话记录。当有人尝试登录时,您需要查询数据库以计算活动会话的数量。

您计算登录请求数量的想法由于以下几个原因而无法正常工作:

  1. 如果服务器重新启动,则计数将丢失,而用户仍将进行身份验证。
  2. 它不会与多个Node进程一起扩展,因为每个Node进程都无法将登录尝试传递给其他进程。

答案 1 :(得分:1)

我最后在会话表中添加了另一个字段,用于跟踪user_id

在创建会话的每个登录操作中,我查询当前用户的所有会话,如果超出限制则删除它们。