1

我们有一个 Zuul Pre-Filter (Filter1),它将检查传入的 HTTPServletRequest 并对其中的查询参数进行一些更改,以将其嵌入到自定义创建的请求中(包装 HttpServletRequestWrapper)。

现在,我想将此自定义包装请求传递给下一个 Zuul Pre-Filter (Filter2)。我怎样才能做到这一点 ?

之前在使用常规 Servlet 过滤器时,我们在我的 Filter1 中使用如下

chain.doFilter(new CustomRequestWrapper(request, extra), response);

但是,在 Zuul 过滤器中,Zuul 框架负责调用后续过滤器并传递请求/响应对象。我怎样才能覆盖它?

4

1 回答 1

3

在 Filter1 执行结束之前,调用以下命令用我们包装的自定义请求覆盖现有的 HTTPServletRequest

RequestContext context = RequestContext.getCurrentContext();
HttpServletRequest request = context.getRequest();
.
.
. 
context.setRequest(new CustomRequestWrapper(request, extra));

参考 http://netflix.github.io/zuul/javadoc/zuul-core/com/netflix/zuul/context/RequestContext.html#setRequest(javax.servlet.http.HttpServletRequest)

于 2015-05-26T08:44:21.113 回答