当前位置: 首页 > ai >正文

微服务-23.网关登录校验-自定义GlobalFilter

一.自定义过滤器

我们以GlobalFilter为例来详细解读一下过滤方法:

1.方法参数:第一个方法参数类型为ServerWebExchange,这个对象可以理解成网关内部的一个上下文对象。保存网关内一些共享数据。

2.第二个参数类型为GatewayFilterChain,这个是过滤器链,当我们自定义的过滤器执行完后,可以调用这个阐述来执行下一个过滤器。

3.返回值:返回值类型为Mono,网关过滤器内部分成pre和post两部分,实现filter方法内部所有逻辑都属于pre,当pre执行完我们可以调用chain,执行下一个过滤器。下一个过滤器执行完会立刻返回Mono。

二.代码编写实现filter方法

package com.hmall.gateway.filter;import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.http.HttpHeaders;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import org.springframework.core.Ordered;@Component
public class MyGlobalFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request = exchange.getRequest();HttpHeaders headers = request.getHeaders();System.out.println("获取请求头:" + headers);return chain.filter(exchange);      // 放行到下一个过滤器}// 定义该过滤器的优先级,数值越小优先级越高。NettyRoutingFilter默认优先级为Integer.MAX_VALUE,即最小优先级,我们设置为0可以保证优先级在NettyRoutingFilter之前执行@Overridepublic int getOrder() {return 0;}
}

通过实现Ordered接口来实现过滤器顺序的排序。其中数字越大优先级越低。我们要求自定义过滤器要在NettyRoutingFilter之前,因此我们查看一下NettyRoutingFilter的过滤器优先级,发现他是int类型的最大值,即优先级排在最后。

我们的优先级为0,满足条件。

http://www.xdnf.cn/news/18765.html

相关文章:

  • 数据结构青铜到王者第五话---LinkedList与链表(2)
  • 洛谷: CF632D Longest Subsequence-普及+/提高
  • 相机激光安全等级和人眼安全
  • 亚马逊云科技免费套餐新政解析与实战:数据分析与可视化平台
  • 机器学习(二)特征工程
  • 深度剖析初始化vue项目文件结构!!【前端】
  • (MySQL索引事务) 本节目标 索引 事务
  • 机器学习--支持向量机
  • 数据结构(一):算法的时间复杂度和空间复杂度
  • 在使用spring ai进行llm处理的rag的时候,选择milvus还是neo4j呢?
  • 固定资产管理系统核心模块拆解:全流程管理逻辑
  • 30.LSTM-长短时记忆单元
  • 视频号存在争议了...
  • 从零开始的 Docker 之旅
  • 嵌入式系统学习Day23(进程)
  • 今日分享:C++ string 类模拟实现
  • 【Linux系统】线程概念
  • 【51单片机】萌新持续学习中《矩阵 密码锁 点阵屏》
  • 抽象能力的重要性
  • 使用 flutter_tts 的配置项
  • MyBatis 初识:框架定位与核心原理——SQL 自由掌控的艺术
  • 移动应用渗透测试:API 接口漏洞的识别与利用技巧
  • 五自由度磁悬浮轴承同频振动抑制:从机理拆解到传递函数验证的核心方案
  • ICBC_TDR_UShield2_Install.exe [ICBC UKEY]
  • CSDN博客:中文技术社区的知识生产与生态演进
  • 项目设计文档——爬虫项目(爬取天气预报)
  • linux、window java程序导出pdf\word、excel文字字体显示异常、字体样式不一样
  • SOME/IP服务发现PRS_SOMEIPSD_00277的解析
  • 【贪心算法】day3
  • 高教杯数学建模2021-C 生产企业原材料的订购与运输