授权规则
- 很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用Sentinel的来源访问控制的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过:
- 若配置名单,则只有请求来源位于白名单内时才可通过;
-
若配置黑名单,则请求来源位于黑名单不通过,其余的请求通过。
image
- 上面的资源名和授权类型不难理解,但是流控应用怎么填写呢?
其实这个位置要填写的是来源标识,Sentinel提供了
RequestOriginPartser
接口来处理来源。
只要Sentinel保护接口资源被访问,Sentinel就会调用RequestOriginPartser
的实现类去解析访问来源。
- 第1步:自定义来源处理规则
@Component
public class RequestOriginParserDefinition implements RequestOriginParser {
/**
* 定义区分来源:本质作用是通过request域获取到来源标识
* app pc
* 然后交给流控应用位置进行匹配
* @param request
* @return
*/
@Override
public String parseOrigin(HttpServletRequest request) {
String serviceName = request.getParameter("serviceName");
if (StringUtils.isEmpty(serviceName)){
throw new RuntimeException("serviceName is not empty");
}
return serviceName;
}
}
网友评论