Filter 在与Spring Security中的所有HTTP方法(选项除外)匹配的请求之前添加筛选器

Filter 在与Spring Security中的所有HTTP方法(选项除外)匹配的请求之前添加筛选器,filter,spring-security,http-method,Filter,Spring Security,Http Method,在安全配置中,我的方法 @覆盖 受保护的无效配置(HttpSecurity HttpSecurity)引发异常{ httpSecurity .requestMatchers() .antMatchers(“/users/**”,“/activities/**”)和() .addFilterBefore(authenticationTokenFilter,UsernamePasswordAuthenticationFilter.class); } 在Spring Security提供的默认Use

在安全配置中,我的方法

@覆盖
受保护的无效配置(HttpSecurity HttpSecurity)引发异常{
httpSecurity
.requestMatchers()
.antMatchers(“/users/**”,“/activities/**”)和()
.addFilterBefore(authenticationTokenFilter,UsernamePasswordAuthenticationFilter.class);
}
在Spring Security提供的默认
UsernamePasswordAuthenticationFilter
之前添加筛选器。当然,它是在一个扩展
websecurityconfigureradapter
的类中。所有HTTP方法都将匹配我可以从上面的匹配中排除HTTP方法选项吗?类似于

和()忽略().antMatchers(HttpMethod.OPTIONS)

我可以复制代码并对所有应该匹配的方法使用
.antMatchers(HttpMethod.x)
,但这会造成混乱。

您可以将逻辑封装到一个函数中,该函数返回一个
自定义程序来减少重复的代码,例如:

专用自定义程序antMatchersExcludeHttpOptions(字符串…路径){
返回c->{
for(HttpMethod方法:EnumSet.allOf(HttpMethod.class)){
如果(!method.equals(HttpMethod.OPTIONS)){
c、 蚂蚁匹配器(方法、路径);
}
}
};
}
并将
HttpSecurity
配置为:

@覆盖
受保护的无效配置(HttpSecurity HttpSecurity)引发异常{
httpSecurity
.requestMatchers(antMatchersExcludeHttpOptions(“/users/**”,“/activities/**”))
.addFilterBefore(authenticationTokenFilter,UsernamePasswordAuthenticationFilter.class);
}