zoukankan      html  css  js  c++  java
  • 【SpringCloud】Gateway Filter的使用(十九)

    Gateway Filter介绍

      Filter,在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出、流量监控等,有非常重要的作用

      Filter除了分为“pre”和“post”两种方式的Filter外,在Spring Cloud Gateway中,Filter从作用范围可分为另外两种,一种是针对于单个路由的Gateway Filter,它在配置文件中的写法同predict类似;另外一种是针对于所有路由的Global Gateway Filer。现在从作用范围划分的维度来讲解这两种Filer。

    Gateway Filter的使用

    1、单个路由的Gateway Filter用法

      参考官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/#gatewayfilter-factories

    2、Global Gateway Filer用法

      当请求与路由匹配时,过滤Web处理程序会将的所有实例GlobalFilter和所有特定GatewayFilter于路由的实例添加到过滤器链中。该组合的过滤器链按org.springframework.core.Ordered接口排序,您可以通过实现该getOrder()方法进行设置。

      由于Spring Cloud Gateway区分了执行过滤器逻辑的“前”阶段和“后”阶段,因此优先级最高的过滤器是“前”阶段的第一个,而“后”阶段的最后一个。

      演示项目使用【SpringCloud】Gateway路由配置(十七)节的代码示例

      1)在springcloud-gateway-gateway9527网关模块中,新建Filter实现接口 GlobalFilter, Ordered 

     1 @Component
     2 @Slf4j
     3 public class MyLogGateWayFilter implements GlobalFilter, Ordered {
     4     @Override
     5     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
     6         log.info("=========Come in MyLogGateWayFilter: " + new Date() + "==========");
     7         String uname = exchange.getRequest().getQueryParams().getFirst("uname");
     8         if(uname == null) {
     9             log.info("=========用户名为null,非法用户========");
    10             exchange.getResponse().setComplete();
    11         }
    12         // 成功
    13         return chain.filter(exchange);
    14     }
    15 
    16     @Override
    17     public int getOrder() {
    18         return 0;
    19     }
    20 }

      2)测试

        a、启动项目

        b、访问地址:http://localhost:9527/payment/get/1

        访问出错,日志记录打印非法用户

        c、访问地址:http://localhost:9527/payment/get/1?uname=1

        正常访问:

        

      

  • 相关阅读:
    跳出iframe
    leetcode 225. Implement Stack using Queues
    leetcode 206. Reverse Linked List
    leetcode 205. Isomorphic Strings
    leetcode 203. Remove Linked List Elements
    leetcode 198. House Robber
    leetcode 190. Reverse Bits
    leetcode leetcode 783. Minimum Distance Between BST Nodes
    leetcode 202. Happy Number
    leetcode 389. Find the Difference
  • 原文地址:https://www.cnblogs.com/h--d/p/12741935.html
Copyright © 2011-2022 走看看