ssoAuthenticationFilter

ssoAuthenticationFilter

我有自定义身份验证过滤器,该过滤器创建PreAuthenticatedAuthenticationToken并将其存储在安全上下文中。这一切都很好。这是配置:

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private SsoAuthenticationProvider authenticationProvider;

    @Autowired
    private SsoAuthenticationFilter ssoAuthenticationFilter;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.addFilterAfter(ssoAuthenticationFilter, SecurityContextPersistenceFilter.class);
    }
}

现在,我的ssoAuthenticationFilterFilterChainProxy的一部分,在正确的位置。光滑的。

但是由于ssoAuthenticationFilterFilter,因此它会被Boot拾取并作为过滤器包含在内。所以我的过滤器链看起来真的像:
  • ssoAuthenticationFilter(由于为Filter而包含在内)
  • filterChainProxy(Spring自动配置)
  • ...
  • SecurityContextPersistenceFilter
  • ssoAuthenticationFilter(包含在http.addFilterAfter(...)中)
  • ...
  • 其他一些过滤器

  • 显然,我想摆脱这里ssoAuthenticationFilter的自动注册(列出的第一个)。

    任何提示,不胜感激。

    最佳答案

    2个选择:

  • 以您的滤 bean 为目标过滤器添加一个FilterRegistrationBean @Bean并将其标记为enabled = false
  • 不要为您的过滤器创建@Bean定义(通常就是我要做的,但是是YMMV,因为您可能依赖 Autowiring 或某些使它起作用的方法)
  • 08-05 01:31