2017-05-05 456 views
0

我试图通过扩展WebSecurityConfigurerAdapter类和实现configure(WebSecurity web)方法来绕过所有过滤器和安全层。Spring Security WebSecurityConfig忽略多个条件的某些请求

如果我想让多个端点被忽略,它会很好地工作。如果我想忽略具有特定端点的请求或具有特定请求标头,但它不能满足两个条件,这意味着忽略具有特定路径和特定请求标头的请求。它基本上忽略了是否满足这些条件之一。我试图像不同的变化:

RequestHeaderRequestMatcher requestHeaderRequestMatcher = new RequestHeaderRequestMatcher(HEADER_HEALTH_CHECK, "1"); 
AntPathRequestMatcher antPathRequestMatcher = new AntPathRequestMatcher("/healthStats"); 
web 
    .ignoring() 
     .requestMatchers(requestHeaderRequestMatcher, antPathRequestMatcher); 

web 
    .ignoring() 
     .requestMatchers(requestHeaderRequestMatcher) 
     .antMatchers("/healthStats"); 

回答

1

你有两个要求的匹配相结合,看AndRequestMatcher

RequestMatcher,将返回true,如果所有RequestMatcher情况下,比赛过去了。

修改后的配置:

RequestHeaderRequestMatcher requestHeaderRequestMatcher = new RequestHeaderRequestMatcher(HEADER_HEALTH_CHECK, "1"); 
AntPathRequestMatcher antPathRequestMatcher = new AntPathRequestMatcher("/healthStats"); 
AndRequestMatcher andRequestMatcher = new AndRequestMatcher(requestHeaderRequestMatcher, antPathRequestMatcher); 
web 
    .ignoring() 
     .requestMatchers(andRequestMatcher);