不调用ZuulFilter

时间:2019-03-11 10:35:33

标签: java spring-boot spring-cloud netflix-zuul spring-cloud-netflix

我使用:

  • spring-boot 2.1.2发布
  • spring-cloud Greenwich.RELEASE

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类

我想念什么?为什么可能不调用过滤器?就我而言,是否应该调用它?

0 个答案:

没有答案