Sentinel授权规则

很多时候,我们需要根据调用方来判断该次请求是否放行,这时候可以使用Sentinel的来源访问控制功能。

  • 若配置白名单,则只有请求来源位于白名单内时才可通过;
  • 若配置黑名单,则请求来源位于黑名单时不允许通过,其余的请求来源可以通过。

流控应用

流控应用填写的是调用方标识,Sentinel提供了RequestOriginParser接口来处理标识信息。

只要Sentinel保护的接口资源被访问,Sentinel就会调用RequestOriginParser的实现类去解析调用者标识。

第一步:自定义调用方标识处理规则

package cn.jack.config;

import com.alibaba.csp.sentinel.adapter.servlet.callback.RequestOriginParser;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import javax.servlet.http.HttpServletRequest;

@Component      // 交由spring管理,否则拿不到RequestOriginParser实现类,授权规则不生效
public class RequestOriginParserDefinition implements RequestOriginParser {
    // 获取调用方标识信息并返回
    @Override
    public String parseOrigin(HttpServletRequest request) {
        String serviceName = request.getParameter("serviceName");
        StringBuffer url = request.getRequestURL();
        if (url.toString().endsWith("favicon.ico")) {
            // 浏览器会向后台请求favicon.ico图标
            return serviceName;
        }

        if (StringUtils.isEmpty(serviceName)) {
            throw new IllegalArgumentException("serviceName must not be null");
        }

        return serviceName;
    }
}

第二步:配置授权规则

这个配置的意思是,serviceName=pc不能访问(黑名单)

第三步:访问http://localhost:8091/order/message2?serviceName=pc以及http://localhost:8091/order/message2?serviceName=app观察结果。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值