【发布时间】:2018-12-13 10:18:00
【问题描述】:
我需要为基于 Webflux 的应用程序添加安全性,并且我的要求意味着我需要添加多个过滤器链。但是,WebFilterChainProxy 的当前实现使用 Flux.filterWhen(...),如果我正确阅读文档,它将只返回链中的第一个匹配项。
鉴于上述情况,我有三个问题:-
我的react知识非常有限,谁能确认一下我对
filterWhen的理解是否正确?如果是这样,谁能提出一种方法让多个过滤器链在新的 Spring Security 5 反应模型中工作?
如果我误解了 filterWhen 方法的工作原理,谁能提出任何建议,为什么只处理我的一个过滤器链?
我向链中添加过滤器的方式是使用@Order注释的多种配置方法,类似于下面的代码块。
@Configration
@EnableWebFluxSecurity
public class SecurityConfig
...
@Bean
@Order(1)
SecurityWebFilterChain chain1(ServerHttpSecurity http) {
return http.httpBasic().disable()......
}
@Bean
@Order(2)
SecurityWebFilterChain chain2(ServerHttpSecurity http) {
return http.httpBasic().disable()......
}
@Bean
@Order(3)
SecurityWebFilterChain chain3(ServerHttpSecurity http) {
return http.httpBasic().disable()......
}
...
}
当我调试应用程序时,我可以看到所有三个过滤器都已添加到WebFilterChainProxy,但我只得到一个匹配的过滤器。我需要找到一种方法来返回所有匹配的过滤器。
有人可以帮忙吗?
【问题讨论】:
-
看起来 github.com/spring-projects/spring-security/issues/5395 是 Spring Security 上这个问题的错误
标签: spring-security spring-webflux