创建自定义 Zuul 过滤器

Posted

技术标签:

【中文标题】创建自定义 Zuul 过滤器【英文标题】:Creating custom Zuul filters 【发布时间】:2015-09-12 09:04:21 【问题描述】:

我想为我的 Zuul 代理实现自定义过滤器。现在,我知道已经有很多人谈论这个主题 here,我查看了提供的答案,其中包含过滤器示例和 Spring Cloud 文档,我已经阅读了好几次。我尝试复制一些过滤器内容以供我使用,但没有成功。

我有一个 Eureka 服务器,注册了 3 个独立的服务,其中一个是另外两个的前门,从每个服务中收集信息并检索它。

我想要做的是重新路由 Zuul 在流程开始时收到的请求,通过特定服务重定向它们,使用 URL 参数来确定应该针对哪个流程而不是另一个流程。 我已经创建了一个带有@Component 注释的过滤器,实现了ZuulFilter。我不知道的是如何使重定向起作用,以及使用哪些方法。

所以,问题是:如何使用 URL 参数将传入请求重定向到不同的注册服务?

【问题讨论】:

【参考方案1】:

查看PreDecorationFilter 以获取基于url 路径匹配路由的示例(即/myservice)。如果它匹配完整的 url,它将在功能区上下文中设置routeHost,否则设置serviceId(将使用功能区进行路由)。你需要写一些类似的东西来匹配参数。

【讨论】:

谢谢。我会立即查看并回复您。 我查看了您在项目中显示的代码,我必须说我没有那么多配置,因为我的 Zuul 服务器是带有@EnableZuulProxy 的普通 Spring 应用程序。我是否缺少某种能够添加过滤器的配置?或者我创建一个就足够了,在上面放一个@Bean 注释并运行服务器? 我给你看的项目是源码,所以你当然没有那么多配置。是的,您需要使用@Bean 创建一个过滤器。 谢谢 Spencer,它对我很有帮助,现在我终于明白了。继续在 Spring Cloud 上的出色工作:)

以上是关于创建自定义 Zuul 过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Zuul - 自定义错误过滤器

Zuul自定义Filter

Spring Cloud(Dalston.SR5)--Zuul 网关-过滤器

SpringCloud-Zuul(二):自定义Filter及Zuul内部路由源码解析

网关中自定义登陆验证过滤器

Spring Cloud - Zuul添加过滤器