限制每个用户在 PassportJS 上的并发会话数
Limit the number of concurrent sessions per user on PassportJS
正如标题所说,我需要为网络应用设置每个用户的并发会话上限,以防止帐户共享。
我在 passportjs(在节点平台上)中使用本地策略进行身份验证。
这样做的最佳做法是什么?计算登录请求(创建会话的位置)的数量是否足够?
对于每次成功登录,您都需要在数据库中维护一个会话记录。当有人尝试登录时,您将需要查询数据库以计算活动会话数。
您计算登录请求次数的想法行不通,原因如下:
- 如果服务器重新启动,计数将丢失,而用户仍将通过身份验证。
- 它不能扩展到多个节点进程,因为每个节点进程都无法将登录尝试传达给其他进程。
我最终在会话的 table 中添加了另一个字段以跟踪 user_id
s。
在创建会话的每个登录操作中,我查询当前用户的所有会话,如果超过限制则将其删除。
正如标题所说,我需要为网络应用设置每个用户的并发会话上限,以防止帐户共享。
我在 passportjs(在节点平台上)中使用本地策略进行身份验证。
这样做的最佳做法是什么?计算登录请求(创建会话的位置)的数量是否足够?
对于每次成功登录,您都需要在数据库中维护一个会话记录。当有人尝试登录时,您将需要查询数据库以计算活动会话数。
您计算登录请求次数的想法行不通,原因如下:
- 如果服务器重新启动,计数将丢失,而用户仍将通过身份验证。
- 它不能扩展到多个节点进程,因为每个节点进程都无法将登录尝试传达给其他进程。
我最终在会话的 table 中添加了另一个字段以跟踪 user_id
s。
在创建会话的每个登录操作中,我查询当前用户的所有会话,如果超过限制则将其删除。