我正在使用Spring framework 4.0发行版以及Spring Security 3.2发行版。我遇到了一种情况,需要使用功能来限制同一用户ID的活动会话数。通过阅读Spring Security文档,我了解到Spring Security提供了this类型的功能。我试过这样实现它。它工作正常(在单一系统上)。我已经使用自定义UserDetailsService类和自定义UserDetails类。
现在出现的问题是,如何在集群环境中实现此行为?我正在拥有一个具有粘性会话机制的集群环境。
答案 0 :(得分:2)
您需要实施Custom SessonRegistry。您将需要一种方法(pref:database)来共享群集节点之间的会话。
因此,当用户成功进行身份验证时,检查是否已经分配给用户的sessionId(在数据库中)。然后,使之前的会话无效并保存新的会话ID。
此外,要对请求进行身份验证,您需要使用数据库对其进行验证。