Как задать пользовательский фильтр в приложении.YML Spring Cloud Gateway



У меня есть пользовательский фильтр шлюза MYGatewayFilter.файл java теперь я хочу использовать этот фильтр шлюза с моим маршрутом, написанным в приложении.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());
}
}
618   1  

1 ответ:

Вместо реализации GatewayFilter следует реализовать GatewayFilterFactory

И сделать его компонентом:

@Component
public class MyGatewayFilter implements GatewayFilterFactory {

Тогда вы можете ссылаться на него по имени Боба в вашем маршруте.

filters:
- MyGatewayFilter

Документация по этому вопросу на данный момент не очень хороша. Я смог понять это, только посмотрев на исходный код spring-cloud-gateway на github

Comments

    Ничего не найдено.