我有一个自定义网关过滤器MYGatewayFilter.java文件,现在我想将此网关过滤器与我的路径一起使用,路径写入application.yml
spring:
cloud:
gateway:
routes:
- id: login2_route
uri: http://127.0.0.1:8083/login
predicates:
- Path: /login/
filters:
如何定义上述路由的过滤器
自定义过滤器MyGatewayFilter.java
public class MyGatewayFilter implements GatewayFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request;
if(request.getHeaders().get("x-mydata")!=null){
request= exchange.getRequest().mutate().header("my-new-header",request.getHeaders().get("x-mydata").get(0)).build();
}
return chain.filter(exchange.mutate().request(request).build());
}
}
3条答案
按热度按时间bvpmtnay1#
您应该实现GatewayFilterFactory,而不是实现网关过滤器
并使其成为组件:
然后可以通过路由中的bean名称引用它。
目前关于这方面的文档还不是很好,我只能通过查看github上spring-cloud-gateway的源代码来了解这一点
ctzwtxfj2#
您需要实现
GatewayFilterFactory
和应用程序.yml文件中
0yg35tkg3#
我认为Spring Cloud Gateway 2.2.1有一些变化。
我指的是SaveSessionGatewayFilterFactory.java。
和应用程序.yml文件中