当前位置: 首页 > 知识库问答 >
问题:

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

太叔志尚
2023-03-14

在Spring引导应用程序的上下文中,我试图添加一个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

非常感谢!

共有1个答案

夏和雅
2023-03-14

也许我有更干净的方法来解决你的问题。它基于UrlBasedCorsConfigurationSource中的代码。它使用适合您需要的路径模式。

@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
        }
    }
}
 类似资料:
  • 我有一个过滤器: 如果不是WebFlux,那么我会这么做: 但这是不可能做到这一点,因为请求身份过滤器实现WebFilter... 如何使用WebFilter Spring WebFlux指定过滤器的必要路径?

  • 这些配置允许你对许多与URL映射和路径匹配有关的设置进行定制。关于所有可用的配置选项,请参考PathMatchConfigurer类的API文档。 下面是采用MVC Java编程配置的一段代码: @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter {

  • 问题内容: 在下面的函数中,如果用户尚未登录,我想将其重定向到。是否有一个特殊的变量可以为我提供当前的URL,该URL可以像下面的示例那样工作? 我需要检查当前URL是否为,因为如果不这样做,服务器将进入无限循环。 问题答案: 您可以检查请求对象上的几个属性(可能在此处记录),请参见此处记录。不过,我可以建议一下,这样一来,如果您决定将视图路由到另一个或多个URL,就会被覆盖

  • 我试图在下面的填充()方法中填充一个列表,使用泛型来放松类型参数的限制,但我一直出错 类型列表中的add(int,capture#2-of?extends Number)方法不适用于参数(int) 当我尝试用编译器修复它时,它会自动用null填充列表。请问我该如何解决这个问题:

  • Tango支持4种形式的路由匹配规则 静态路由 tg.Get("/", new(Action)) tg.Get("/static", new(Action))匹配 URL:/ 到 Action结构体的Get函数 匹配 URL:/static 到 Action结构体的Get函数 命名路由 tg.Get("/:name", new(Action)) tg.Get("/(:name)", new(Act

  • 我正在写一个求解方程求解方法。方法将是递归的;搜索所有外括号,当找到时,重新求解括号内的值,当没有找到括号时返回值。 Regex.Replace(...)替换指定模式的所有匹配项。我希望能够匹配到多个场景,并用不同的输出替换每个场景