Spring 如何使用WebSecurityConfigureAdapter配置筛选器?

Spring 如何使用WebSecurityConfigureAdapter配置筛选器?,spring,spring-security,Spring,Spring Security,我正在尝试添加一个需要作为FilterConfig给定的参数的筛选器。我将它添加到WebApplicationInitializer::onStartup(ServletContext容器)方法中,并且配置良好(使用正确的FilterConfig调用init方法) 关键是我使用的是SpringSecurityWebSecurityConfigureAdapter,我的过滤器从未被调用过(不在过滤器链中)。 如果我用addFilterAfter添加它,就没有办法给他一个FilterConfig @

我正在尝试添加一个需要作为FilterConfig给定的参数的筛选器。我将它添加到WebApplicationInitializer::onStartup(ServletContext容器)方法中,并且配置良好(使用正确的FilterConfig调用init方法)

关键是我使用的是SpringSecurityWebSecurityConfigureAdapter,我的过滤器从未被调用过(不在过滤器链中)。 如果我用addFilterAfter添加它,就没有办法给他一个FilterConfig

@Override
public void onStartup(ServletContext container) throws ServletException {
    super.onStartup(container);

    FilterRegistration.Dynamic urlRewriteFilter = container.addFilter("UrlRewriteFilter", UrlRewriteFilter.class);
    urlRewriteFilter.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), false, "/*");
    urlRewriteFilter.setInitParameter("confPath", "WEB-INF/urlrewrite-prod.xml");
}
 @Override
 protected void configure(HttpSecurity http) throws Exception {
  http
  .exceptionHandling()
    .authenticationEntryPoint(spnegoEntryPoint())
    .and()
    .authorizeRequests()
        .antMatchers("/").permitAll()
        .anyRequest().authenticated()
        .and()
    .httpBasic()
        .and()
    .logout()
        .and()
    .addFilterBefore(spnegoAuthenticationProcessingFilter(authenticationManagerBean()), BasicAuthenticationFilter.class)
    .addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class)
    .addFilterAfter(new CacheFilter(), CsrfFilter.class)
    .addFilterAfter(new UrlRewriteFilter(), CsrfFilter.class);
 }

我哪里错了?

我的错误是在过滤器映射中。我调用addMappingForServletNames而不是addMappingForUrlPatterns

@Override
public void onStartup(ServletContext container) throws ServletException {
    super.onStartup(container);

    FilterRegistration.Dynamic urlRewriteFilter = container.addFilter("UrlRewriteFilter", UrlRewriteFilter.class);
    //urlRewriteFilter.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), false, "/*");
    urlRewriteFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), false, "/*");
    urlRewriteFilter.setInitParameter("confPath", "WEB-INF/urlrewrite-prod.xml");
}