将 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 WebFilter 映射

spring boot webfilter 顺序

Spring WebFlux添加WebFIlter以匹配特定路径

更改 Spring Security WebFilter 的顺序

如何在 WebFilter 上配置 Spring DataBuffer 大小

Spring boot 中使用 @WebListener @WebFilter 不生效