微服务11-Sentinel中的授权规则以及Sentinel服务规则持久化

news2025/2/28 1:16:07

文章目录

  • 授权规则
  • 自定义异常结果
  • 规则持久化
  • 实现Push模式

授权规则

根据来源名称对请求进行拦截 ——>我们需要解析来源名称(RequestOriginParser默认解析都为default),所以我们要自定义一个实现类(根据请求头解析,给运行访问的来源+一个请求头

防止绕过,请求我们的服务,对请求来源进行授权
在这里插入图片描述
1.对于我们客户端请求过来的资源,服务需要进行判断是浏览器还是网关

自定义实现RequestOriginParser请求解析器来获取请求的来源

在这里插入图片描述
2.尝试在request请求头中加一个origin请求头,给网关加一个

从网关来的请求就有这个请求头,而从浏览器来的就没有——>以此做一个区分

@Component
public class HeaderOriginParser implements RequestOriginParser {
    @Override
    public String parseOrigin(HttpServletRequest httpServletRequest) {
//1.获取请求头
        String origin = httpServletRequest.getHeader("origin");
//2.进行请求头的非空判断
        if (StringUtils.isEmpty(origin)) {
            origin = "blank";
        }
        return origin;
    }
}

3.对请求头进行资源处理后,还需要对gateway网关添加origin请求头中参数值,然后我们要通过网关路由userservice服务时,就会带origin请求头,在资源处理器进行处理时就会放行;

 gateway:
      routes:
        - id: user-service # 路由标示,必须唯一
          uri: lb://userservice # 路由的目标地址
          predicates: # 路由断言,判断请求是否符合规则
            - Path=/user/** # 路径断言,判断路径是否以/user开头,如果是则符合,跳转路由
 
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**
          filters: # 过滤器添加一个请求头
            - AddRequestHeader=Truth,Itcast is freaking aowsome!
      default-filters: # 对所有路由生效
        - AddRequestHeader=origin,gateway #添加origin请求头,值为gateway

此时我们localhost:8081/user/1还是能够访问的,还没有配置授权规则

4.最后在Sentinel中配置授权规则只有网关过来才能访问
在这里插入图片描述
5.此时绕过网关访问,会发现被拦截

在这里插入图片描述
6.然后我们通过网关访问,因为在之前的配置类中加入了一个网关请求的过滤器
认证我们的请求加上一个叫authorization且值为admin的参数,否则拦截

过滤器代码

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest();
        //1.得到request中的所有参数
        MultiValueMap<String, String> params = request.getQueryParams();
 
        //2.获取里面含有authorization的参数
        String auth = params.getFirst("authorization");
 
        //3.判断参数是否符合:authorization==admin
        if("admin".equals(auth)){
            return chain.filter(exchange);
        }
 
        //4.进行拦截,并且设置响应状态码
        exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
        return exchange.getResponse().setComplete();
    }
}

在这里插入图片描述
总结:授权生效

自定义异常结果

在这里插入图片描述
在这里插入图片描述
自定义异常
在这里插入图片描述
在这里插入图片描述
最重要的两个接口:

RequestOriginParser——>用来解析请求资源的(一般用于授权规则里头)

BlockExceptionHandler——>用来处理异常(根据是限流异常还是热点参数异常还是降级异常。。。设置状态信息)

在这里插入图片描述

规则持久化

场景:当我们的服务重启时,Sentinel会进行重启,服务会丢失

原因:Sentinel的默认模式会将默认的规则放到内存中,所以会丢失

在这里插入图片描述
对Sentinel推送规则进行监听,一旦发现变化,发送数据库(定时)

缺点:时效性较差,因为它是定时将规则保存在数据库中,比如你数据刚保存,然后你立马调用,此时就不会数据保存了;
在这里插入图片描述
将配置规则先推送到配置中心nacos之类的,然后我们的Sentinel客户端监听nacos,配置变更就会完成本地配置更新;——>本质上是利用nacos的监听特质

实现Push模式

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MIT 6.S081 Operating System/Fall 2020 macOS搭建risc-v与xv6开发调试环境

文章目录 本机配置安装环境Homebrew执行安装脚本查看安装是否成功 RISC-V tools执行brew的安装脚本 QEMUXV6 测试有用的参考链接&#xff08;感谢前辈&#xff09;写在结尾 本机配置 电脑型号&#xff1a;Apple M2 Pro 2023 操作系统&#xff1a;macOS Ventura 13.4 所以我的电…

CTFHub SSRF 题目

文章目录 CTFHub SSRF 通关教程1. 内网访问&#xff0c;伪协议利用1.1 内网访问1.2 伪协议读取文件1.3 端口扫描 2. POST请求&#xff0c;上传文件&#xff0c;FastCGI协议&#xff0c;Redis协议2.1 POST请求2.2 上传文件2.3 FastCGI协议2.4 Redis协议 3. Bypass系列3.1 URL By…

中国人民大学与加拿大女王大学金融硕士究竟适合金融国企人还是金融外企人呢?

随着中国经济的快速发展&#xff0c;金融业已经成为国民经济的重要支柱产业。在这个背景下&#xff0c;金融国企和金融外企的发展也日益繁荣。想发展不断学习的脚步是一刻不能停歇的&#xff0c;由此&#xff0c;免联考双证的中国人民大学与加拿大女王大学金融硕士就开始逐渐走…

有哪些好用的电容笔?苹果平板触控笔推荐

对于学生党来说&#xff0c;用哪种电容笔比较合适&#xff1f;苹果的原装电容笔&#xff0c;尽管性能很好&#xff0c;功能也很多&#xff0c;却就是太贵了&#xff0c;一般人根本买不起&#xff0c;而且重量还挺重&#xff0c;握在手上使用久了会很费劲。如果你只是想单纯地用…

申博|2024国内985院校申博时间参考

转眼已近10月中旬&#xff0c;小编给大家总结了2024年国内985院校博士申请预计时间汇总&#xff0c;一般各高校都是临近博士报名启动才会发布具体的招生通知&#xff0c;所以想要申博的同学们可以在日期临近前注意查看高校官方信息。 以下申请时间为2023年博士申请的时间&…

4.添加3DTiles

愿你出走半生,归来仍是少年&#xff01; 在构建好的三维场景中添加3DTile&#xff08;本地离线数据以及在线服务&#xff09;。 1.在线服务 首先需要准备一个已发布出来的3DTile服务. 打开Cesium面板&#xff0c;添加Blank 3D Tileset &#xff0c;然后选中该对象&#xff0c;…

WIFI产品使用指导说明

一、登录服务器 二、新建产品 三、设置WIFI产品的联网参数 1、恢复出厂设置 2、设置参数 四、操作更新 网络连接特性&#xff1a; 路由器掉线得情况下&#xff0c; 第一次&#xff0c;搜索网络1分钟间隔第二次&#xff0c;搜索网络1分钟间隔第三次&#xff0c;搜索网络…

git下载bos仓库代码

安装git 插件 登录git 填写仓库地址后 把仓库代码 下载某个文件夹&#xff0c; 然后再拷贝到自己的 解决方案中

开发信群发技巧有哪些?外贸邮件怎么群发?

如何做外贸开发信群发&#xff1f;外贸开发信群发用什么邮箱好&#xff1f; 无论你是一位销售专业人员&#xff0c;一名初创企业家还是一家大型公司的市场营销团队成员&#xff0c;都能受益于掌握这些技巧。下面蜂邮EDM将为您介绍一些关键的开发信群发技巧&#xff0c;帮助你在…

批量执行insert into 的脚本报2006 - MySQL server has gone away

数据库执行批量数据导入是报“2006 - MySQL server has gone away”错误&#xff0c;脚本并没有问题&#xff0c;只是insert into 的批量操作语句过长导致。 解决办法&#xff1a; Navicat ->工具 ->服务器监控->mysql ——》变量 修改max_allowed_packet大小为512…

树莓派 5添加对PCIe 2.0支持,耗时七年花费2500万美元

据了解&#xff0c;早在上个月底&#xff0c;树莓派 5就已经正式发布&#xff0c;该机主要是提升了硬件性能&#xff0c;添加了对 PCIe 2.0的支持。 树莓派 5采用了 64 位四核 Arm Cortex-A76 处理器&#xff0c;频率为 2.4GHz&#xff0c;相比上一代性能提高了 2~3倍。并配备…

LeetCode【128】最长连续序列

题目&#xff1a; 分析&#xff1a; 1、最长连续序列的长度为 y-x1&#xff0c;如1-4&#xff1a;4-11 4 2、不要被这里的On误导&#xff0c;不敢使用双层循环 3、只要找到最小的数值&#xff0c;并由此开始计算&#xff0c;不产生重复计算&#xff0c;则为On 代码&#xf…

【C++】从认识using namespace std开始进入C++的学习

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 &#x1f4e3;&#x1f4e3;&#x1f4e3;今天博主…

AI秘籍:助您提升办公和学习效率

AI产品在提升办公和学习效率上可是有一手呢&#xff01;看看下面这些实用的AI产品&#xff0c;让你分分钟变成效率达人&#xff01; 1. 语音助手&#xff1a;不论是Siri、Cortana还是小冰&#xff0c;一个简单的语音指令就能帮你执行任务&#xff0c;比如发邮件、设提醒、查资料…

九、【裁剪工具组】

文章目录 裁剪工具透视裁剪工具切片工具切片选择工具 裁剪工具 使用裁剪工具&#xff0c;可以将目标图像裁剪成任意我们所需要的大小&#xff1b;使用时按住shift键可以根据对角线来定义裁剪图像的大小&#xff0c;按住ALT键&#xff0c;可以根据等比例大小来裁剪图像。 拉直…

11. SpringBoot项目中参数获取与响应

SpringBoot项目中参数获取与响应 1. 程序结构&通信方式 程序结构&#xff1a; C/S &#xff1a; 客户端/服务器端 -Main方法。 -效果炫目、数据相对安全。 -公司成本高&#xff0c;因为要分别开发客户端和服务器端。 B/S&#xff1a; 浏览器端/服务器端 -效果依赖于浏览…

【网络安全 --- 靶场搭建】sqlserver SQL注入靶场搭建(提供资源)

一&#xff0c;资源下载地址 百度网盘资源下载链接&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.bai…

tcp/ip协议2实现的插图,数据结构2 (9 - 章)

&#xff08;20&#xff09; 20 九章1 IP选项处理 ip_dooptions &#xff08;21&#xff09;

qq视频录制教程,让你的视频更加精彩

“qq视频可以录制吗&#xff1f;浏览qq的时候发现一段有趣的视频&#xff0c;点击下载却一直显示失败&#xff0c;朋友叫我把视频录制下来&#xff0c;但是我不知道怎么操作&#xff0c;想问问大家&#xff0c;有没有办法录制qq的视频。” 在信息化的时代&#xff0c;通过视频…

C# Sqlite数据库的搭建及使用技巧

C# Sqlite数据库的搭建 前言: 今天我们来学一下Sqlite的数据库的搭建&#xff0c;Sqlite数据库不比MySqL数据库&#xff0c;SQlite数据是一个比较轻量级的数据库&#xff0c;SQLite提供了比较多的工具集&#xff0c;对数据基本上不挑&#xff0c;什么数据都可以处理&#xff…