Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring security 引入springSecurityFilterChain后,FilterRegistrationBeans未执行_Spring Security_Spring Boot - Fatal编程技术网

Spring security 引入springSecurityFilterChain后,FilterRegistrationBeans未执行

Spring security 引入springSecurityFilterChain后,FilterRegistrationBeans未执行,spring-security,spring-boot,Spring Security,Spring Boot,如果我使用Java配置设置SS HttpSecurity。Spring Boot创建一个springSecurityFilterChain,它在安装日志期间被记录。但是,现在使用标准URL模式的FilterRegistrationBeans不会被调用 第2部分问题: 这是标准行为吗?哪里一旦安装了Spring Security,我所有的Servlet FilterBean注册就会突然中断??我原以为SpringBoot会自动找出如何将它们“添加”到相应的springSecurityFilterC

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

第2部分问题:
  • 这是标准行为吗?哪里一旦安装了Spring Security,我所有的Servlet FilterBean注册就会突然中断??我原以为SpringBoot会自动找出如何将它们“添加”到相应的springSecurityFilterChain中。无论如何,这不是我所看到的

  • 我看到了http.addFilter(myFilter)API方法。但是,我不想污染我的安全配置,因为我知道所有这些过滤器。可以说,如何从“外部”将自定义Servlet过滤器添加到SpringSecurityFilterChainbean中?你知道……”将它们自动配置到springSecurityFilterChain.:)


  • 正如您在下面看到的,默认情况下,
    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();
        }
    
    if(!disableDefaults){
    http
    .csrf()和()
    .addFilter(新的WebAsyncManagerIntegrationFilter())
    .exceptionHandling()和()
    .headers()和()
    .sessionManagement()和()
    .securityContext()和()
    .requestCache()和()
    .anonymous()和()
    .servletApi()和()
    .apply(新的DefaultLoginPageConfigurer())和()
    .logout();
    }
    
    FilterRegistratonBeans向servlet容器注册过滤器bean。他们与Spring Security无关。你是怎么确定它们坏了的?为什么您希望它们成为Spring Security的筛选器链的一部分?当我使用“/*”时,我的自定义筛选器将在Spring Security FC之前调用。我需要在SS FC之后但在调用我的服务之前调用它们。在使用特定的url模式时,我根本没有看到它们执行(在调试器或日志文件中),似乎只有“/*”能够捕获它们。您可以在过滤器上使用@Order来确保它们在Spring Security的过滤器之后运行。我认为Spring安全过滤器的默认顺序是零。为过滤器指定较低的优先级(较高的值)。