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



我正在使用spring云网关将请求路由到我的下游应用程序我在下面定义了路由器

@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;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 
};
}

}

所以我需要从传入路径/user/test/**转发到http://localhost:8081/test1或http://localhost:8081/test2基于我的自定义过滤器中的数据库查找返回

您基本上正在改变我认为的路径,所以您可以用这种方式做到这一点。

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

相关内容

  • 没有找到相关文章

最新更新