FilterRegistrationBeans没有通过引入springSecurityFilterChain执行

时间:2015-02-12 14:29:03

标签: spring-security spring-boot

如果我使用Java Config设置SS HttpSecurity。 Spring Boot会创建一个springSecurityFilterChain,它会在安装日志期间记录。但是,不会调用现在具有标准URL模式的FilterRegistrationBeans。

2部分问题:

  1. 这是标准行为吗?哪里......一旦安装了Spring Security,我的所有Servlet FilterBeanRegistration都会突然崩溃?我原本以为Spring Boot会自动弄清楚如何添加"它们自动进入相应的springSecurityFilterChain。无论如何,这不是我所看到的。

  2. 我看到了http.addFilter(myFilter)API方法。但是,我不想污染我的SecurityConfig以了解我拥有的所有这些过滤器。如何将自定义Servlet过滤器添加到来自'外部'的springSecurityFilterChain bean中。可以这么说?你知道..'自动配置'他们自己,上了springSecurityFilterChain。 :)

1 个答案:

答案 0 :(得分:0)

正如您在下面所见,WebSecurityConfigurerAdapter默认情况下会为安全过滤器链添加许多内容。

虽然我仍然不知道哪个设置导致FilterBeanRegistrations中断,但将disableDefaults设置为true并自行配置安全过滤器链就可以了。

    if(!disableDefaults) {
        http
            .csrf().and()
            .addFilter(new WebAsyncManagerIntegrationFilter())
            .exceptionHandling().and()
            .headers().and()
            .sessionManagement().and()
            .securityContext().and()
            .requestCache().and()
            .anonymous().and()
            .servletApi().and()
            .apply(new DefaultLoginPageConfigurer<HttpSecurity>()).and()
            .logout();
    }