Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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
Java 使用Spring引导的Spring安全和自定义身份验证筛选器_Java_Spring_Spring Security_Spring Boot - Fatal编程技术网

Java 使用Spring引导的Spring安全和自定义身份验证筛选器

Java 使用Spring引导的Spring安全和自定义身份验证筛选器,java,spring,spring-security,spring-boot,Java,Spring,Spring Security,Spring Boot,我有一个自定义的身份验证过滤器,它创建预身份验证身份验证令牌,并将其存储在安全上下文中。这一切都很好。以下是配置: @Configuration @EnableWebMvcSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private SsoAuthenticationProvider authenticationProvider; @A

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

@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);
    }
}
现在,我的
ssAuthenticationFilter
是位于右侧位置的
FilterChainProxy
的一部分。光滑的

但是由于
SSAuthenticationFilter
Filter
,因此它会通过引导被拾取并作为一个过滤器包含。所以我的过滤链看起来像:

  • ssoAuthenticationFilter(包括在内,因为它是
    过滤器
  • filterChainProxy(弹簧自动配置)
    • SecurityContextPersistenceFilter
    • SSAuthenticationFilter(包含在http.addFilterAfter(…)中)
  • 其他一些过滤器
显然,我想在这里取消
SSAuthenticationFilter
的自动注册(列出的第一个)

非常感谢任何提示

2种选择:

  • 添加一个
    FilterRegistrationBean
    @Bean
    ,将您的过滤器Bean作为其目标过滤器,并将其标记为enabled=false

  • 不要为您的过滤器创建
    @Bean
    定义(通常我就是这么做的,但是YMMV,因为您可能依赖自动布线或其他方法来让它工作)


  • 是否有计划将Spring安全过滤器配置与Spring引导方式相融合?我希望能够设置servlet过滤器的顺序,包括能够将一个放在安全过滤器之前,而不必弄乱
    HttpSecurity
    我认为我不理解这个过滤器(而且它似乎没有给答案添加任何内容)。无论如何,您不能将安全过滤器作为有序bean来执行,因为在一个上下文中可以有多个过滤器链。