HttpSessionEventPublisher在java配置中不工作
我有一个成熟的java web应用程序,它使用spring安全性(4.2.3、java8、tomcat8),并包含一个视图,允许用户查询会话注册表以查看还有谁登录。这取决于HttpSessionEventPublisher在用户注销时通知会话注册表。 最初的实现使用web.xml配置,但我现在主要使用java配置重新实现了它。我重构的最后一件事是HttpSessionEventPublisher。 当我将它从web.xml声明移动到WebSecurity配置适配器时,它停止工作。特别是,注销会话不再从注册表中删除。 我知道bean正在被实例化(工厂方法正在被调用) 这是参考文档中建议的java配置:HttpSessionEventPublisher在java配置中不工作,java,spring-security,Java,Spring Security,我有一个成熟的java web应用程序,它使用spring安全性(4.2.3、java8、tomcat8),并包含一个视图,允许用户查询会话注册表以查看还有谁登录。这取决于HttpSessionEventPublisher在用户注销时通知会话注册表。 最初的实现使用web.xml配置,但我现在主要使用java配置重新实现了它。我重构的最后一件事是HttpSessionEventPublisher。 当我将它从web.xml声明移动到WebSecurity配置适配器时,它停止工作。特别是,注销会话
@Bean
public HttpSessionEventPublisher httpSessionEventPublisher() {
return new HttpSessionEventPublisher();
}
要在java配置中实现这一点,需要一些技巧吗?
HttpSessionEventPublisher
应该注册为标准侦听器,而不是Springbean。检查一下
因此,我认为您需要使用WebApplicationInitializer
注册它,如下所示:
public final class MyWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(final ServletContext ctx) {
ctx.addListener(new HttpSessionEventPublisher());
}
}