将 WebFilter Spring WebFlux 添加到路径
Posted
技术标签:
【中文标题】将 WebFilter Spring WebFlux 添加到路径【英文标题】:Add a WebFilter Spring WebFlux to paths 【发布时间】:2022-01-11 19:43:33 【问题描述】:我有一个过滤器:
@Component
public class RequestIdFilter implements WebFilter
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain)
//my logic
return chain.filter(exchange);
如果不是 WebFlux,那么我会这样做:
@Configuration
class FilterConfig
private final String V1_URL_PATTERN = "/v1/*";
private final String V2_URL_PATTERN = "/v2/*";
@Bean
public FilterRegistrationBean<RequestIdFilter> requestIdFilter()
FilterRegistrationBean<RequestIdFilter> filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new RequestIdFilter());
filterRegistrationBean.addUrlPatterns(V1_URL_PATTERN, V2_URL_PATTERN);
return filterRegistrationBean;
但这是不可能的,因为 RequestIdFilter 实现了 WebFilter...
如何使用 WebFilter Spring WebFlux 指定过滤器的必要路径?
【问题讨论】:
【参考方案1】:根据this声明WebFilter就足够了
我认为你需要一个 HandlerFilterFunctions
WebFlux 框架提供了两种类型的过滤器:WebFilters 和 HandlerFilterFunctions。 HandlerFilterFunction 实现仅适用于基于路由器的实现。
有一个例子here
【讨论】:
感谢您的回复。但我不太明白如何实现它 添加了更多细节以上是关于将 WebFilter Spring WebFlux 添加到路径的主要内容,如果未能解决你的问题,请参考以下文章
Spring WebFlux添加WebFIlter以匹配特定路径
更改 Spring Security WebFilter 的顺序