授权规则|学习笔记

简介: 快速学习授权规则

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段授权规则】学习笔记与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/684/detail/11878


授权规则

 

内容介绍:

一、课题引入

二、流控应用填写

三、编写请求

四、区分来源

 

一、课题引入

根据调用微服务来源判断该次请求是否允许放行,举例说明:微服务 A,B,C ,A 和 B 都会调用 C ,以 C 为主要微服务,那么 A 和 B 就是 C  的请求来源,假设 A 来源的请求全部通过, B 来源的请求全部禁止,这就是根据来源决定是否放行请求。

image.png

可知使用 Sentinel 的来源访问控制的功能。来源访问控制根据资源请求来源 (origin) 限制资源是否通过。“是否通过”采用以下两种形式:

l 若选择白名单:则只有请求来源位于白名单内时才能通过;

l 若选择黑名单:则请求来源位于黑名单时不通过,其余请求均通过

 image.png

上图的资源名和授权类型易理解。

 

二、流控应用填写:

流控应用一栏需填写来源标识, Sentinel 提供 “Request Origin Parser”  (请求来源处理)接口来处理来源。只要 Sentinel 保护的接口资源被访问, Sentinel 就会调用 Request Origin Parser 的实现类去解析访问来源。

演示如下:

image.png

假设如图是 C 为 order 微服务, A 为 pc 端, B为 app 端。只有pc 端可以访问,其余均不可以,要想填写流控应用,则 pc,app 访问必须传递一个参数命名为 “serviceName” ,根据 “serviceName” 进行判断。

具体编写如下:

①编写:找到 config 选择 Refactor

②在 config 里找到 New 选择 Java Class ,弹出窗口在 Name 一栏输入 RequestOriginParserDefinition(定义) 点击确定。

③执行命令,实现 RequestOriginParser 。

package  com.itheima.config;

import com.alibaba.csp.sentinel.adpter.servlet.callback.RequestOriginParser;

import  org.apache. commons.lang3.StringUtils;

import  org.springframework.stereotype.Component;

import  javax.servlet.http.HttpServletRequest;

@Component

public calss  RequestOriginParserDefinition implements RequestOriginParser  {

//定义区分来源:本质作用是通过 request 域获取到来源标识

//app  pc

//然后  交给流控应用  位置进行匹配

@Override

public  String  parseOrigin(HttpServletRequest request) {

String  serviceName = request . getParameter (s: “serviceName”);

if  (StringUtils.isEmpty(serviceName))  {

throw new RuntimeException(“serviceName  is  not  empty”);

}

return  serviceName;

}

命令编写完毕进行保存。

 

三、编写请求

打开浏览器,新建网页,然后在最上方进行输入网址”

http://localhost:8091/order/message1?serviceName=app”

回车执行,结果是可以访问,

通过  throw new RuntimeException(“serviceName  is  not  empty”);这个位置可以找到 serviceName 这个来源。

 

四、区分来源

找到 Sentinel 控制台1.7.0中左侧列表栏的簇点链路中的/order/message1  ,点击授权,在流程应用中输入 pc ,授权类型选择白名单,再次访问,结果可以成功访问,访问 app 被限制。

若采用黑名单,流程应用中输入 pc ,其他请求均可通过,再次执行访问,结果 app 被限制, pc 可以访问。

相关文章
|
SQL 弹性计算 分布式计算
TiDB计算层详解:分布式计算框架与查询优化机制
【2月更文挑战第26天】本文将深入剖析TiDB的计算层,详细解析其分布式计算框架和查询优化机制。通过了解计算层的核心组件和工作原理,我们可以更好地理解TiDB如何高效处理SQL查询和计算任务。本文将从计算层的架构、任务分发、查询优化等方面展开介绍,帮助读者全面掌握TiDB计算层的关键技术和优势。
|
存储 云计算 对象存储
云计算——ACA学习 云计算分类
云计算——ACA学习 云计算分类
407 0
|
供应链 搜索推荐 数据挖掘
有哪些备受好评的流程管理工具?为复杂工作流程“做减法”
流程管理是企业运营的关键环节,通过系统化、标准化和持续优化,提升效率、降低成本、提高服务质量,增强市场竞争力。本文介绍了六款流程管理工具:板栗看板、Kissflow、Nintex、Appian、Tibco BPM 和 Pega,它们各自具备直观易用、强大功能、高定制性和良好集成能力等特点,帮助企业实现高效流程管理。
|
负载均衡 前端开发 应用服务中间件
使用Nginx配置SSL以及部署前端项目
本文介绍了如何使用Nginx配置SSL证书以启用HTTPS,并展示了如何通过Nginx部署前端项目,包括配置SSL证书、设置代理和负载均衡的示例。
495 2
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
579 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
JavaScript Linux iOS开发
|
Java API C++
【C++ 与Qt 线程】C++ std::thread 与Qt qthread多线程混合编程
【C++ 与Qt 线程】C++ std::thread 与Qt qthread多线程混合编程
1026 1
|
数据安全/隐私保护 C++ UED
【教程】一个比较良心的 C++ 代码混淆器
【教程】一个比较良心的 C++ 代码混淆器
|
SQL 搜索推荐 关系型数据库
Windows 系统彻底卸载 SQL Server 通用方法
Windows 系统彻底卸载 SQL Server 通用方法
1640 0
Windows 系统彻底卸载 SQL Server 通用方法
|
网络虚拟化 网络架构
2021年4月-(计算机网络)小型校园网络模拟搭建,最全最准确版!(一)
2021年4月-(计算机网络)小型校园网络模拟搭建,最全最准确版!!!!!
859 0