[英]Restrict Multiple Login of same user across 2 Web Applications
我们已经要求限制2个Web应用程序中同一用户的并发登录。
例如,我们有2个Web应用程序:WebApp1,WebApp2。
用户:仪表板
如果仪表板用户登录到WebApp1,则不允许同一用户登录WebApp2,而是在第二次登录时显示错误消息。
尝试过的解决方案:
如果存在活动会话,则使用相同的用户ID阻止第二次登录,并向用户显示错误消息。
这个想法是在数据库中维护用户ID,应用程序名称和会话ID。 在同一用户的第二次登录时,检查数据库表中是否存在针对该用户ID的记录,然后阻止第二次登录并向用户显示错误消息。
在以下情况下,清除数据库记录(UserId,会话ID和应用程序名称):
不确定如何处理以下情况。
如果第二次登录请求来自有效用户,则管理员应该能够使第一次登录的会话无效,因为该用户是攻击者。
使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.