AuthorityRule does not take effect for Spring Boot

黑名单规则:

public void initBlackWhite() {
    AuthorityRule rule = new AuthorityRule();
    rule.setResource("resource1");
    rule.setStrategy(RuleConstant.AUTHORITY_BLACK);
    rule.setLimitApp("resource3");
    AuthorityRuleManager.loadRules(Collections.singletonList(rule));
}

接口:resource3调用resource1

@RequestMapping("/blackWhite")
public String blackWhite() {
    ContextUtil.enter("resource1", "resource3");
    String s = resource3.call("blackWhite");
    ContextUtil.exit();
    return s;
}

resource3定义: @SentinelResource(value = "resource3", blockHandler = "blockHandler", fallback = "fallback") public String call(String name) { String s = resource1.call(name); return s; } resource1定义: @SentinelResource(value = "resource1", blockHandler = "blockHandler", fallback = "fallback") public String call(String name) { return name + "1"; }

问题:

以下main函数硬编码方式正常限流,但是通过浏览器访问上述接口/blackWhite始终无法限流,这是什么原因?调用方resource3已经通过编码声明了,但好像没有效果。

public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(Demo01Application.class, args);

    Resource1 resource1 = context.getBean(Resource1.class);
    Resource3 resource3 = context.getBean(Resource3.class);

    ContextUtil.enter("resource1", "resource3");
    System.out.println(resource3.call("111"));
    ContextUtil.exit();
}

版本:

org.springframework.boot spring-boot-dependencies 2.4.4 pom import org.springframework.cloud spring-cloud-dependencies 2020.0.4 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies 2021.1 pom import

原提问者GitHub用户tearsmoon

展开
收起
学习娃 2023-05-19 14:58:45 122 分享 版权
1 条回答
写回答
取消 提交回答
  • Web 入口的来源应由对应的 origin parser 所解析,ContextUtil 在这里无效。可以参考 FAQ 里面的指引。

    原回答者GitHub用户sczyh30

    2023-05-19 20:10:25
    赞同 展开评论
问答分类:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

还有其他疑问?
咨询AI助理