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

Node.js 限制PassportJS上每个用户的并发会话数,node.js,session,login,passport.js,Node.js,Session,Login,Passport.js,正如标题所说,我需要为web应用程序的每个用户设置并发会话的上限,以防止帐户共享 我在passportjs(节点平台上)中使用本地策略进行身份验证 这样做的最佳实践是什么?计算登录请求的数量(创建会话的位置)是否足够?对于每次成功登录,您需要在数据库中维护会话记录。当有人试图登录时,您需要查询数据库以计算活动会话的数量 您计算登录请求数的想法不起作用,原因如下: 如果服务器重新启动,计数将丢失,而用户仍将通过身份验证 它不能扩展到多个节点进程,因为每个节点进程都无法将登录尝试与其他进程通信 最后

正如标题所说,我需要为web应用程序的每个用户设置并发会话的上限,以防止帐户共享

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


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

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

您计算登录请求数的想法不起作用,原因如下:

  • 如果服务器重新启动,计数将丢失,而用户仍将通过身份验证
  • 它不能扩展到多个节点进程,因为每个节点进程都无法将登录尝试与其他进程通信

  • 最后,我在会话的表中添加了另一个字段,用于跟踪
    user\u id
    s


    在创建会话的每次登录操作中,我都会查询当前用户的所有会话,如果会话超过限制,则将其删除。

    我说的计数是指将其保留在数据库中。有没有办法处理过期的会话?您使用的是哪一个数据库?我可以根据需要进行处理。比如说SQL Server。对于SQL数据库,您需要构造一个查询来从数据库中删除任何过期的会话,并在您关心会话的任何时候运行该查询。您将有一个“expiresAt”字段,因此您将有逻辑删除expiresAt