我使用:
Zuul依赖项:
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-zuul'
我正在使用zuul和负载均衡的rest模板从另一个服务中调用微服务:
restTemplate.postForEntity("http://image/api/image", imageDto, ImageDto.class)
请求到达下游服务,但是未在ZullFilter中设置Authorization
头(我尝试使用不同的头):
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
注释了Application类
我想念什么?为什么可能不调用过滤器?就我而言,是否应该调用它?