• Spring Cloud Gateway 过滤器


    一、GatewayFilter 网关过滤器 

    GatewayFilter介绍

    GatewayFilter 网关过滤器用于拦截并链式处理web请求,可以实现横切的与应用无关的需求,比如:安全、访问超时的设置等。

    从类图中可以看到,GatewayFilter 有三个实现类:

    • OrderedGatewayFilter 是一个有序的网关过滤器

    • GatewayFilterAdapter 是一个适配器类,是web处理器(FilteringWebHandler)中的内部类

    • ModifyResponseGatewayFilter 是一个内部类,用于修改响应体

    有序的网关过滤器 OrderedGatewayFilter

    过滤器大多都是有优先级的,因此有序的网关过滤器的使用场景会很多。在实现过滤器接口的同时,有序网关过滤器也实现了 Ordered 接口,构造函数中传入需要代理的网关过滤器以及优先级就可以构造一个有序的网关过滤器。具体的过滤功能的实现在被代理的过滤器中实现的,因此在此只需要调用代理的过滤器即可。

    public class OrderedGatewayFilter implements GatewayFilter, Ordered {
    
        private final GatewayFilter delegate;
        private final int order;
    
        public OrderedGatewayFilter(GatewayFilter delegate, int order) {
            this.delegate = delegate;
            this.order = order;
        }
        --------------------------------省略-------------------------------
    }
    网关过滤器适配器 GatewayFilterAdapter

    在网关过滤器链 GatewayFilterChain 中会使用 GatewayFilter 过滤请求,GatewayFilterAdapter的作用就是将全局过滤器 GlobalFilter 适配成 网关过滤器 GatewayFilter。

    // FilteringWebHandler.java

    private static class GatewayFilterAdapter implements GatewayFilter {
    
            private final GlobalFilter delegate;
    
            public GatewayFilterAdapter(GlobalFilter delegate) {
                this.delegate = delegate;
            }
    
            @Override
            public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
                return this.delegate.filter(exchange, chain);
            }
    
            @Override
            public String toString() {
                final StringBuilder sb = new StringBuilder("GatewayFilterAdapter{");
                sb.append("delegate=").append(delegate);
                sb.append('}');
                return sb.toString();
            }
        }
    ModifyResponseGatewayFilter

    ModifyResponseGatewayFilter 是 ModifyResponseBodyGatewayFilterFactory 的内部类,用于修改响应体的信息。

    二、全局过滤器

  • 相关阅读:
    2月3日
    照片测试
    家属签证计时
    我来了
    090204 阴天
    重要提醒to 小爱
    小毛小毛
    C++Primer学习日程
    资料库字段存储文件记录的方式
    本日有点忙
  • 原文地址:https://www.cnblogs.com/myitnews/p/14107925.html
Copyright © 2020-2023  润新知