java – Spring安全和自定义AuthenticationFilter与Spring启动

前端之家收集整理的这篇文章主要介绍了java – Spring安全和自定义AuthenticationFilter与Spring启动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有自定义身份验证过滤器,它创建了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);
    }
}

现在我的ssoAuthenticationFilter是FilterChainProxy的一部分,位于正确的位置.光滑.

但是,由于ssoAuthenticationFilter是“过滤器”,所以它被引导并被包含为过滤器.所以我的过滤器链真的像:

> ssoAuthenticationFilter(包括因为是过滤器)
> filterChainProxy(spring autoconfiguration)

> …
> SecurityContextPersistenceFilter
> ssoAuthenticationFilter(由http.addFilterAfter(…)包含)
> …

>其他一些过滤器

显然,我想在这里清除ssoAuthenticationFilter的自动注册(列出的第一个).

任何提示非常感激.

解决方法

2个选择:

>将FilterRegistrationBean @Bean添加到过滤器bean作为其目标过滤器,并将其标记为enabled = false>不要为您的过滤器创建一个@Bean定义(通常这就是我所做的,但YMMV,因为您可能依赖自动装配或某些东西来使其工作)

猜你在找的Java相关文章