Я использую:
- spring-boot 2.1.2.RELEASE
- весеннее облако Гринвич. РЕЛИЗ
Зуул зависимость:
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-zuul'
Я вызываю микросервис из другого, используя zuul и шаблон с балансировкой нагрузки:
restTemplate.postForEntity("http://image/api/image", imageDto, ImageDto.class)
Запрос достигает нисходящего сервиса, но заголовок Authorization
(я пробовал с разными) не устанавливается в ZullFilter:
public class ZuulAuthFilter extends ZuulFilter {
public static final String AUTHORIZATION_HEADER = "Authorization";
public String filterType() {
return PRE_TYPE;
}
public int filterOrder() {
return PRE_DECORATION_FILTER_ORDER - 1;
}
public boolean shouldFilter() {
return true;
}
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
String authorizationValue = ctx.getRequest().getHeaders(AUTHORIZATION_HEADER).nextElement();
ctx.addZuulRequestHeader(AUTHORIZATION_HEADER, authorizationValue);
return null;
}
}
Я также создал фильтр @Bean
:
@Bean
public ZuulAuthFilter zuulAuthFilter() {
return new ZuulAuthFilter();
}
Вот моя конфигурация zuul:
zuul:
sensitiveHeaders: Cookie,Set-Cookie
ribbon:
eager-load:
enabled: true
Похоже, что фильтр вообще не вызывается. Я добавил System.exit(0)
к каждому переопределенному методу фильтрации, и приложение все еще работает.
Я аннотировал класс приложения с помощью @EnableZuulProxy
Что мне не хватает? Почему фильтр не может быть вызван? Должен ли он вообще вызываться в моем случае?