我需要在基于 Webflux 的应用程序中添加安全性,并且有要求意味着我需要添加多个过滤器链。但是,如果我正确阅读文档,当前的WebFilterChainProxy使用实现Flux.filterWhen(...)只会返回链中的第一个匹配项。
鉴于上述我有三个问题:-
我的反应知识非常有限,有人可以确认我对什么的理解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()......
}
...
}
Run Code Online (Sandbox Code Playgroud)
当我调试应用程序时,我可以看到所有三个过滤器都已添加到 中,WebFilterChainProxy但我只得到一个匹配的过滤器。我需要找到一种返回所有匹配过滤器的方法。
有人可以帮忙吗?