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

Spring WebFlux add WebFIlter to match specific paths(Spring WebFlux添加WebFIlter以匹配特定路径)

本文介绍了Spring WebFlux添加WebFIlter以匹配特定路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Spring Boot应用程序的上下文中,我尝试添加一个WebFilter以仅筛选与特定路径匹配的请求。

到目前为止,我有一个过滤器:

    @Component
    public class AuthenticationFilter implements WebFilter {

        @Override
        public Mono<Void> filter(ServerWebExchange serverWebExchange,
                             WebFilterChain webFilterChain) {
        final ServerHttpRequest request = serverWebExchange.getRequest();

            if (request.getPath().pathWithinApplication().value().startsWith("/api/product")) {
               // logic to allow or reject the processing of the request
            }
        }
    }

我试图实现的是从筛选器中删除路径匹配,并将其添加到其他更合适的位置,例如,从我到目前为止读到的内容,SecurityWebFilterChain

非常感谢!

推荐答案

我可能有一种更清晰的方法来解决您的问题。它基于UrlBasedCorsConfigurationSource中的代码。它使用PathPattern满足您的需求。

@Component
public class AuthenticationFilter implements WebFilter {

    private final PathPattern pathPattern;

    public AuthenticationFilter() {
        pathPattern = new PathPatternParser().parse("/api/product");
    }

    @Override
    public Mono<Void> filter(ServerWebExchange serverWebExchange,
                         WebFilterChain webFilterChain) {
    final ServerHttpRequest request = serverWebExchange.getRequest();

        if (pathPattern.matches(request.getPath().pathWithinApplication())) {
           // logic to allow or reject the processing of the request
        }
    }
}

这篇关于Spring WebFlux添加WebFIlter以匹配特定路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:Spring WebFlux添加WebFIlter以匹配特定路径