【问题标题】:Spring cloud - Zuul - custom FiltersSpring Cloud - Zuul - 自定义过滤器
【发布时间】:2023-03-04 09:32:01
【问题描述】:

Spring cloud Netflix 文档没有关于现有 Zuul 过滤器的任何信息。是否有任何其他资源可以解释现有的 zuul 过滤器、创建新过滤器的指南?我还需要知道我应该在自定义过滤器中设置什么优先级以及是否需要像在 servlet 过滤器中一样使用 ResponseWappers?

【问题讨论】:

  • 使用 IDE 很容易找到过滤器,只需查看 ZuulFilter 的层次结构,这些过滤器为您的自定义过滤器提供了一个很好的示例。顺序取决于您的过滤器在做什么,过滤器类型也取决于您的任务。例如,如果您要重写 URL-s,则必须在功能区路由之前重写它。

标签: spring filter spring-cloud netflix netflix-zuul


【解决方案1】:

要创建自定义过滤器,您可以使用 ZuulFilter 扩展该类,并且您必须添加 @Bean 配置。

public class MyFilter extends ZuulFilter {
    @Override
  public String filterType() {
    return "pre";
  }

  @Override
  public int filterOrder() {
    return 1;
  }

  @Override
  public boolean shouldFilter() {
    return true;
  }

  @Override
  public Object run() {
    return null;
  }
    }

把这个定义写在用springbootapplication注解的类上

@Bean
  public MyFilter myFilter() {
    return new MyFilter();
  }

过滤器有 4 种类型 PRE, ROUTING, POST, ERROR 我认为名称说明了用途,您可以在上面的 FilterType() 方法中定义过滤器的类型,也可以选择优先级。

您可以使用 RequestContext 来获取请求和响应。

这些文档可能有助于获取更多详细信息:-

  1. https://spring.io/guides/gs/routing-and-filtering/
  2. https://github.com/Netflix/zuul/wiki/How-it-Works

【讨论】:

    猜你喜欢
    • 2018-08-06
    • 2016-05-27
    • 2015-04-12
    • 2016-07-11
    • 2020-04-15
    • 2018-08-23
    • 1970-01-01
    • 2015-09-12
    • 2017-09-03
    相关资源
    最近更新 更多