我有一个要求,我需要为与Spring Security集成的Spring MVC应用程序的企业应用程序开发登录流程。
要求是我应该将用户限制为一个会话: 示例:我有两个用户组A和B.
案例A :(当没有会话时)
来自“A”组的用户具有特定角色,但是当他们登录并且他们没有以前的会话时,他们应该有两个选项可供选择作为他们现有的角色(或)另一个我应该在应用程序中动态更新的角色(SPECIAL ROLE)。
来自“B”组的用户只需登录即可进入仪表板而无需任何选择。
案例B :(当有活跃会议时)
两个组中的用户都应该获得一个选项表单供他们选择,如果他们想要注销上一个会话并在此处登录(OR)只需返回用户登录页面。当他们选择注销并在此处登录时,其他会话将被终止(无效)。
如果他们选择返回登录页面,则之前的会话不会受到影响。
案例C :(当组'A'选择特殊角色的用户已经有一个活跃的会议时)
我正在尝试使用Spring安全性来开发此需求,但是当我配置会话管理时,框架只会注销其他用户并使旧会话无效。我应该给ConcurrentSessionFilter提供自定义实现,或者可能在其他一些过滤器级别(我很困惑),我可以向用户显示选项并执行操作。 和 当我使用自定义并发策略类时,sessionRegistry.getAllPrincipals()给我一个空列表但是当我配置Spring安全sessionManagement()。sessionRegistry(new SessionRegistryImpl());我能够得到人口稠密的校长。
我也尝试过自定义成功处理程序并试图根据他的角色重定向它工作正常但是它没有完成我的要求而且我确信我应该对特定的Spring Security过滤器链做一些自定义实现来实现它但经过几天的阅读和使用Spring Security进行会话管理缺乏资源后,我才迷失方向。
我被困在这里,任何帮助将不胜感激。这是我第一次使用Spring Security并实现会话管理。
提前致谢:)
使用Spring Security,MVC,Core 4 Java配置