Spring 4.0并发会话控制配置无法正常工作

时间:2016-09-04 18:14:35

标签: java session spring-security concurrency

我正在尝试使用Spring安全性版本4.0在我的项目中实现Spring并发会话控制。我实现了扩展AbstractAuthenticationProcessingFilter的自定义类。以下是我的配置。

的web.xml

<listener>
    <listener-class>
        org.springframework.security.web.session.HttpSessionEventPublisher
    </listener-class>
</listener>

安全配置

根据我的理解,我需要将NullAuthenticatedSessionStrategy中的默认AbstractAuthenticationProcessingFilter替换为concurrentSessionControlAuthenticationStrategy。这应该是诀窍。因此,无论何时创建/销毁会话HttpSessionEventPulisher都会通知concurrentSessionControlAuthenticationStrategy,它将从SessionRegistry添加/删除该会话。默认情况下,maximumSessions设置为1,因此如果用户尝试登录多次; concurrentSessionControlAuthenticationStrategy会抛出错误。但是,通过以下配置,身份验证策略不会设置为并发。

http
.sessionManagement()
.sessionAuthenticationStrategy(concurrentSessionControlAuthenticationStrategy());

@Bean
public SessionRegistry sessionRegistry(){
    return new SessionRegistryImpl();
}

@Bean
public ConcurrentSessionControlAuthenticationStrategy concurrentSessionControlAuthenticationStrategy(){
    return new ConcurrentSessionControlAuthenticationStrategy(sessionRegistry());

}

我可以使用

从子类设置它
setSessionAuthenticationStrategy(concurrentSessionControlAuthenticationStrategy);

但是在这种情况下,无论我使用同一个用户登录多少次,SessionResgistry始终为空。如果我已经理解了春天的并发会话控制是如何工作的,或者我的配置中是否有任何遗漏,那么有人可以指导。谢谢你的帮助。欣赏它。

0 个答案:

没有答案