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的一部分,位于正确的位置.光滑.@H_403_5@

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

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

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

>其他一些过滤器@H_403_5@

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

任何提示非常感激.@H_403_5@

解决方法

2个选择:

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

猜你在找的Java相关文章