alibaba / alibaba/Sentinel

AuthorityRuleChecker if orgin is empty,the result is pass ,is it correct?

Open
#589 2 comments 0 reactions 0 assignees View on GitHub
kind/question
Dominant language
Java
Stars
23.1k
Forks
8.1k
PR merge metrics
No merged PRs in 30d

Description

when we found the AuthorityRuleChecker‘s code,when the resource‘s orgin is empty,the result is pass,when strategy is RuleConstant.AUTHORITY_BLACK,we hope the result is not pass rather than pass

when the resource‘s origin is empty,the temp variable contain is true ,is it more reasonable?

#####code
static boolean passCheck(AuthorityRule rule, Context context) {
String requester = context.getOrigin();

// Empty origin or empty limitApp will pass.
if (StringUtil.isEmpty(requester) || StringUtil.isEmpty(rule.getLimitApp())) {
return true;
}

// Do exact match with origin name.
int pos = rule.getLimitApp().indexOf(requester);
boolean contain = pos > -1;

if (contain) {
boolean exactlyMatch = false;
String[] appArray = rule.getLimitApp().split(",");
for (String app : appArray) {
if (requester.equals(app)) {
exactlyMatch = true;
break;
}
}

contain = exactlyMatch;
}

int strategy = rule.getStrategy();
if (strategy == RuleConstant.AUTHORITY_BLACK && contain) {
return false;
}

if (strategy == RuleConstant.AUTHORITY_WHITE && !contain) {
return false;
}

return true;
####

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.