• springcloud-GateWay的Filter


       由于官方提供的路由过滤器太多,只能自己去查;下面是使用官方过滤器的用法:

      在实际开发中,用自己自定义的过滤器比较多;比如下面作为参考:

    @Component
    public class MyGlobalFilter implements GlobalFilter, Ordered {
        @Override
        public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    
            String username = exchange.getRequest().getQueryParams().getFirst("username");
    
            if(username == null){
                exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
                return exchange.getResponse().setComplete();
            }
    
            return chain.filter(exchange); //放行执行下一个过滤器,并把exchange交给下一个过滤器
        }
    
        @Override
        public int getOrder() {
            return 0;
        }
    }

      是实现一个全局的路由过滤器,需要实现两个接口:GlobalFilter, Ordered,然后覆盖两个方法:

        1. filter():当拦截请求时会执行的方法,跟之前的doFilter一样;但是参数和返回值就比较新颖了,是spring5后才提供的

          > ServerWebExchange:封装了request,response,session以及其他信息,简单的说就是请求常用相关的对象和数据的封装吧

          > Mono<T>:这个有点类似于 统一返回结果的类或接口,作用就是为了统一返回值的类型。

        2. getOrder():该方法是用来确定 过滤器 的执行顺序的,当返回值越小, 则过滤器的执行顺序越优先。

    总结:一般在开发中,自定义全局路由过滤器会比较多,通常在过滤器里面做 日志记录 和 鉴权 会更多点。

  • 相关阅读:
    Allegro PCB转换成PADS方法
    Altium Designer只显示某一层,隐藏其他层
    DCDC功率电感(Inductor)选型
    DDR布线教程
    DDR地址、容量计算、Bank理解
    DDR3中的ODT(On-die termination)
    LINUX文件系统操作指令之四
    linux系统之间通过nfs网络文件系统挂载设置方法
    linux消息队列编程实例
    system()函数
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/14446731.html
Copyright © 2020-2023  润新知