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

如何在Spring云网关中添加预过滤器

那开济
2023-03-14

我使用spring cloud gateway将请求路由到我的下游应用程序,我定义了如下的路由器

@Configuration
public class SpringCloudConfig {

    @Bean
    public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(r -> r.path("/user/test/**")
                        .uri("http://localhost:8081/test")
                        .id("testModule"))
                .build();
    }

}

路由工作正常,现在我需要添加一个预过滤器,它可以执行一些预条件并获得路由路径。但不知道如何动态更改uri。uri(“http://localhost:8081/test")

下面是我在preFilter中尝试的代码。

   @Component
public class testPreFilter extends AbstractGatewayFilterFactory {

    
    @Override
    public GatewayFilter apply(Config config) {
        System.out.println("inside testPreFilter.apply method");
        
        return (exchange, chain) -> {
         //get headers and do lookup for URI in mapping DB 

          **//If contains return modify the uri** 
            return chain.filter(exchange.mutate().request(request).build());
          //else 401 
        };
    }
    
}

因此,我需要根据我的自定义过滤器中的db查找返回,从传入路径/user/test/**转发到http://localhost:8081/test1或http://localhost:8081/test2

共有1个答案

潘坚白
2023-03-14

你基本上改变了我认为的道路,所以你可以这样做。

根据您从数据库中获得的值,设置路径。

 类似资料:
  • 用spring云网关构建新的API网关。目前经历以下挑战。

  • 我正在尝试将JHipster从使用Zuul迁移到Spring云网关。JHipster使用Eureka来查找路由,我相信我已经正确配置了Spring Cloud Gateway来查找路由并向它们传播访问令牌。下面是我的配置: 我创建了一个pull请求,以显示集成Spring Cloud Gateway后发生了什么变化。 https://github.com/mraible/jhipster-reac

  • 我正在使用spring云网关作为边缘服务器。这就是流程 问题是,响应有响应是得到正确的200代码,注入的头是在响应上出现,但数据是不可用的响应。

  • 问题内容: 我想知道,中的类(对于Web应用程序)是否有任何注释?也许@Filter吧? 我想在项目中添加自定义过滤器。 《 Spring Boot参考指南 》提到了关于 ,但是我不确定如何使用它。 问题答案: 如果您要设置第三方过滤器,则可以使用FilterRegistrationBean。例如相当于web.xml 这些将是@Configuration文件中的两个bean 上面已经用spring

  • 通过,我可以轻松地在方法中向添加一个筛选器。 如何使用添加筛选器?我必须使用XML吗? 为了帮助其他人更容易地理解Spring Web配置,我绘制了下面的插图。 比起记住那么多东西,查它还不那么痛苦。 和一篇关于Spring Web初始化的好文章: http://www.kubrynski.com/2014/01/commanding-spring-web-initialization.html

  • 我想在我的项目中添加一个自定义筛选器。 Spring Boot参考指南提到了关于,但我不确定如何使用它。