微服务框架 SpringCloud微服务架构 8 Gateway 网关 8.5 全局过滤器
创始人
2024-03-13 15:29:43
0

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

SpringCloud微服务架构

文章目录

      • 微服务框架
      • SpringCloud微服务架构
      • 8 Gateway 网关
        • 8.5 全局过滤器
          • 8.5.1 全局过滤器 GlobalFilter
          • 8.5.2 案例
          • 8.5.3 总结

8 Gateway 网关

8.5 全局过滤器

8.5.1 全局过滤器 GlobalFilter

全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。

【这个跟default 不是一样的吗?】

区别在于GatewayFilter通过配置定义,处理逻辑是固定的。而GlobalFilter的逻辑需要自己写代码实现。

定义方式是实现GlobalFilter接口

在这里插入图片描述

【行吧】

8.5.2 案例

定义全局过滤器,拦截并判断用户身份

需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件:

  • 参数中是否有authorization,
  • authorization参数值是否为admin

如果同时满足则放行,否则拦截

直接开干!

先来一个过滤器类

package cn.itcast.gateway;import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;/*** ClassName: AuthorizeFilter* date: 2022/10/29 16:56** @author DingJiaxiong*///@Order(-1) //过滤器执行顺序,越小优先级越高
@Component
public class AuthorizeFilter implements GlobalFilter, Ordered {@Overridepublic Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {//1. 获取请求参数ServerHttpRequest request = exchange.getRequest();MultiValueMap params = request.getQueryParams();//2. 获取参数中的authorization 参数String auth = params.getFirst("authorization");//3. 判断参数值是否等于adminif ("admin".equals(auth)){//4. 是,放行return chain.filter(exchange);}//5. 否,拦截//5.1 设置状态码exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);//5.2 拦截请求return exchange.getResponse().setComplete();}@Overridepublic int getOrder() {return -1; //这样也是一样的道理,设置过滤器优先级}
}

OK,这样过滤器就算定义好了,直接重启网关服务

在这里插入图片描述

OK,直接测试

在这里插入图片描述

可以看到直接访问,就是401

加上参数

在这里插入图片描述

没毛病

试试错误的参数

在这里插入图片描述

也是401 ,没毛病!

在这里插入图片描述

8.5.3 总结
  • 全局过滤器的作用是什么?

对所有路由都生效的过滤器,并且可以自定义处理逻辑

  • 实现全局过滤器的步骤?

①实现GlobalFilter接口

②添加@Order注解或实现Ordered接口【过滤器一定要有顺序、不然执行结果可能会和预想的不一样】

③编写处理逻辑

相关内容

热门资讯

美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...