我已将最大并发会话数设置为1。
现在有2 situations
如果有活动会话我想要处理(有人已经登录该用户ID):
如果用户在同一浏览器上再次访问登录页面: 在这种情况下,他将直接登录。
如果用户从其他浏览器/客户端计算机登录:在这种情况下,需要显示错误"该会话已经为该用户激活。您确定要覆盖会话吗?"。如果用户选择“是”,则错误将显示在上一个会话中(我知道错误页面可以配置),如果他选择“否”,则不会登录,前一个会话将保持不变。
如何使用弹簧安全性实现这些用例?到目前为止,我已经能够通过设置最大会话数和错误页来找到并发会话的基本管理。
请帮忙。
感谢。
答案 0 :(得分:1)
我认为你差不多完成了它。要在覆盖会话之前询问用户,请按照以下步骤操作。
在控制器ConfirmSessionRewrite中,从会话注册表中删除用户或将其转发到登录页面。
sessionRegistry.removeSessionInformation(info.getSessionId());