1、受权规则 黑白名单
官方地址
很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用 Sentinel 的来源访问控制(黑白名单控制)的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。
调用方信息通过 ContextUtil.enter(resourceName, origin) 方法中的 origin 参数传入。
-
白名单:白名单内可以访问
-
黑名单:黑名单内不可以访问
-
流程应用,指的值url后origin参数的值,可以是url后的参数,也可以是header中的参数
2、配置javar类,实现RequestOriginParser解析拦截
/**
* 受权规则,黑白名单解析类
*/
@Component
public class MyRequestOriginParser implements RequestOriginParser {
/**
* 从给定的HTTP请求解析源代码。
* @param request
* @return
*/
@Override
public String parseOrigin(HttpServletRequest request) {
// 判断header中是否有此参数
String origin = request.getHeader("origin");
// 判断请求参数中是否有此参数
if(StringUtils.isBlank(origin)){
origin = request.getParameter("origin");
}
if (StringUtils.isBlank(origin)) {
// 或者自定义异常处理
throw new IllegalArgumentException("请求参数不合法");
}
return origin;
}
}
3、示例
!!!!SpringCloudAlibaba项目集成代码示例!!!