java - Spring WebFlux添加WebFIlter匹配特定路径

标签 java spring-security spring-webflux

在 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
        }
    }
}

关于java - Spring WebFlux添加WebFIlter匹配特定路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53080263/

相关文章:

java - 在同一 JTable 单元格中渲染多个对象

spring - 在 Spring Webflux 功能应用程序中验证请求的最佳方法是什么

java - 在spring-webflux中处理错误的正确方法是什么

java - 尝试添加JLabel,但它卡在Jframe中间

java - 使用绑定(bind)创建对象 <xsd :any> to xml is giving null?

java - 如何让我的 MenuItems 从单独的类中调用方法?

java - 如何在 Spring Webflux 中获取引荐来源网址?

java - 清理后 Maven 不编译。 "cannot find symbol"

java - @AuthenticationPrincipal 与 Spring Boot 不工作

java - springSecurityFilterChain - ObjectPostProcessor 是必需的 bean 异常