sentinel–基础–06–授权规则–黑白名单


1、授权规则

授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式

  • 白名单:来源(origin)在白名单内的调用者允许访问
  • 黑名单:来源(origin)在黑名单内的调用者不允许访问

在这里插入图片描述

2、黑白名单

2.1、需求

假设/getUserId/{id}的接口请求,我们认为id>=3的请求,来自内网,id<3的请求来自于外网,而我们不允许外网访问。

注意:上面只是假设,在实际项目里面,区分服务来源,我们可以通过ip,头部信息,或许请求参数的值来表示请求来源。

2.2、代码

package com.example.demo2.business.config;

import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;

/**
 * @ClassName: RequestOriginParserImpl
 * @Description 请求来源接口,返回请求来源名称
 * @Author feizhou
 * @Date 2024/5/25  22:18
 * @Verson 1.0
 **/
@Component
public class RequestOriginParserImpl implements RequestOriginParser {
    @Override
    public String parseOrigin(HttpServletRequest request) {
        String requestURI = request.getRequestURI();
        if (requestURI.contains("/getUserId/")) {//只处理这种请求,其他请求都设置为内网
            String idStr = requestURI.substring(requestURI.lastIndexOf("/") + 1);
            if (Integer.valueOf(idStr) >= 3) {//内网
                return "inner";
            } else {//外网
                return "outer";
            }

        }
        return "inner";
    }
}

在这里插入图片描述

2.3、配置

在这里插入图片描述

2.4、测试

在这里插入图片描述

在这里插入图片描述

更多推荐