繁体   English   中英

限制2个Web应用程序中同一用户的多次登录

[英]Restrict Multiple Login of same user across 2 Web Applications

我们已经要求限制2个Web应用程序中同一用户的并发登录。

例如,我们有2个Web应用程序:WebApp1,WebApp2。

用户:仪表板

如果仪表板用户登录到WebApp1,则不允许同一用户登录WebApp2,而是在第二次登录时显示错误消息。

尝试过的解决方案:

如果存在活动会话,则使用相同的用户ID阻止第二次登录,并向用户显示错误消息。

这个想法是在数据库中维护用户ID,应用程序名称和会话ID。 在同一用户的第二次登录时,检查数据库表中是否存在针对该用户ID的记录,然后阻止第二次登录并向用户显示错误消息。

在以下情况下,清除数据库记录(UserId,会话ID和应用程序名称):

  1. 登出
  2. 会话超时
  3. 重新启动应用程序。

不确定如何处理以下情况。

  1. 关闭浏览器。
  2. 浏览器崩溃
  3. 系统崩溃

如果第二次登录请求来自有效用户,则管理员应该能够使第一次登录的会话无效,因为该用户是攻击者。

使WebApp2 / WebApp1的Http会话无效的最佳方法是什么?

如果您确实需要了解第一个会话的状态,则可以跳过尝试管理服务器中的会话的操作,而无需维护客户端的心跳信号。 让客户端每5秒钟向服务器发送一次请求,以更新“最近一次”记录,该记录包括其IP地址和其来自哪个应用程序,以及“最近一次”是否是注销事件。

然后,另一个应用可以询问“ Last Seen”,如果它超过5秒钟(我实际上将其提高到10以进行询问)或一个LogOut事件,则假定第一个会话已消失并且它们是免费的登录第二个应用程序。 如果“ Last Seen”少于5到10秒,请将它们都撞掉,并用两个IP地址提醒管理员,确定应该杀死哪个IP地址。

除了您拥有的资源外,您还可以将上次活动时间保存在会话数据库中,并进行更新,如果有会话更新,则该频率取决于您的要求(例如,每个请求或每5分钟一次)。 然后,在应用程序/浏览器/系统重新启动的情况下,即使会话存在,即使记录存在,您也要登录该用户。 并且您可以拥有admin用户,该用户可以根据需要手动删除条目。

另一种解决方案是始终登录新应用,然后注销旧应用。 但这将需要在应用程序中引入其他逻辑,以检查会话是否仍然有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM