【发布时间】:2019-04-13 18:16:41
【问题描述】:
我有 2 个 Spring Security WebSecurityConfigurerAdapter 配置。我想使用过滤器 1 过滤对路径 /filter1 的所有请求,不包括 /filter1/filter2 路径。后一个我想用过滤器2过滤。我该如何实现呢?
过滤器 1 配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("filter1/filter2/**").permitAll()
.and()
.antMatcher("filter1/**")
.authorizeRequests()
.anyRequest().authenticated()
.and()
.addFilterBefore(filter1, FilterSecurityInterceptor.class);
}
过滤器 2 配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.antMatcher("filter1/filter2/**")
.authorizeRequests()
.anyRequest().authenticated()
.and()
.addFilterBefore(filter2, FilterSecurityInterceptor.class);
}
【问题讨论】:
-
您是否尝试过类似“filter1/{^(filter2)}/**”的第二个过滤器,只允许经过身份验证的请求?它基本上将正则表达式用于 filter2,但我不确定这是否完全受支持(尽管支持路径变量的正则表达式)。
-
为什么?您想通过多个安全过滤器实现什么目标?
-
@M.Deinum 我想对每个 url 使用单独的身份验证。
-
@他不工作
-
如果这是你想要的,你不需要单独的过滤器。从匹配路径的
antMatcher开始并配置它。
标签: spring spring-boot spring-security