什么是授权规则?
当我们需要根据调用来源来判断该次请求是否允许放行,这时候可以就使用Sentinel的来源
访问控制的功能,对应的操作就是加上相应的授权规则。
点击新增授权规则,出现如下选项:
- 资源名:唯一名称,默认是请求路径,可自定义。
- 流控应用:调用方,也就是调用来源了,比如app端调用或这pc端调用。
- 授权类型:
白名单:只有请求来源位于白名单内时才可通过。
黑名单:请求来源位于黑名单时不通过,其余的请求通过。
测试授权规则
需要先自定义来源处理规则,新增RequestOriginParserDefinition类:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16package com.example.mallorder.service.impl; import com.alibaba.csp.sentinel.adapter.servlet.callback.RequestOriginParser; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; @Component public class RequestOriginParserDefinition implements RequestOriginParser { @Override public String parseOrigin(HttpServletRequest httpServletRequest) { String serviceName = httpServletRequest.getParameter("serviceName"); return serviceName; } }
以上配置就表示解析serviceName这个属性,说明开发用serviceName这个字段来标识来源。
配置一个授权规则:
这个规则表示/order/message1接口,只有serviceName参数值为pc的才能够正常访问。
浏览器访问http://localhost:10020/order/message1?serviceName=pc,接口正常响应:
其余的参数,都会被限流,如下:
这里还有一个特殊情况,不加serviceName参数,接口也能够正常响应,如下:
该特殊情况可以通过代码做限制与校验来避免。
最后
以上就是忧伤板凳最近收集整理的关于Spring Cloud Alibaba入门实践(十五)-Sentinel之授权规则的全部内容,更多相关Spring内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复