Spring security 如何在Spring Boot中添加HttpSessionEventPublisher以注销

Spring security 如何在Spring Boot中添加HttpSessionEventPublisher以注销,spring-security,spring-boot,Spring Security,Spring Boot,我正在尝试实现一个宠物诊所的SpringBoot版本,尽可能少地覆盖SpringBoot默认值 此时,我的注销链接似乎不起作用,有人告诉我这是因为我没有正确地将HttpSessionEventPublisher添加到我的应用程序中 如何将HttpSessionEventPublisher添加到应用程序中 我尝试了以下方法: @Component @Configuration public class WebXmlConfig implements WebApplicationInitialize

我正在尝试实现一个宠物诊所的SpringBoot版本,尽可能少地覆盖SpringBoot默认值

此时,我的注销链接似乎不起作用,有人告诉我这是因为我没有正确地将HttpSessionEventPublisher添加到我的应用程序中

如何将HttpSessionEventPublisher添加到应用程序中

我尝试了以下方法:

@Component
@Configuration
public class WebXmlConfig implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.addListener(new HttpSessionEventPublisher());
    }
}

我的主类不扩展任何类。如果我需要添加HttpSessionEventPublisher,我还需要知道哪个类

没有一个Spring Boot示例正确地注销,因此我没有任何依据


任何帮助都将不胜感激。

如果您没有从Spring安全注销处理程序中获得现成的信息,事件发布者会做什么?您正在使用类似http.logout.logoutUrl/logout.htm.logoutsuccessurlogin.htm的内容配置HttpSecurity?你不需要更多。我还有:http…logout.logoutRequestMatchernew AntPathRequestMatcher/logout.logoutSuccessUrl/.permitAll.and.sessionManagement.maximumSessions1.maxSessionsPreventsLogintrue.expiredUrl/login?expired;我已注销,但无法重新登录。每一篇文章都指向将HttpSessionEventPublisher注册为servlet侦听器,但我需要用JavaConfig而不是XML进行注册,而且我找不到一种真正适合我的方法。请参阅我的注释,上面注释中的代码不应该处理它吗?您使用ServletListenerRegistrationBean的代码是正确的。也许您忘了将@Configuration添加到包含@Bean的类中?
@Bean
public ServletListenerRegistrationBean<HttpSessionEventPublisher> getHttpSessionEventPublisher() {
    return new ServletListenerRegistrationBean<HttpSessionEventPublisher>(new HttpSessionEventPublisher());
}