Fix route forbidden not take effect

This commit is contained in:
hongqiaowei
2022-07-28 18:44:33 +08:00
parent 64fbf0191b
commit 25a7b52fbf
2 changed files with 49 additions and 43 deletions

View File

@@ -408,7 +408,7 @@ public class ApiConfigService implements ApplicationListener<ContextRefreshedEve
if (clientCanAccess.isEmpty()) { if (clientCanAccess.isEmpty()) {
StringBuilder b = ThreadContext.getStringBuilder(); StringBuilder b = ThreadContext.getStringBuilder();
// b.append("app ").append(app).append(" can't access ").append(JacksonUtils.writeValueAsString(apiConfigs)); // b.append("app ").append(app).append(" can't access ").append(JacksonUtils.writeValueAsString(apiConfigs));
b.append("app ").append(app).append(" can't access matching route"); b.append("app ").append(app).append(" can't access matching routes");
return Result.fail(b.toString()); return Result.fail(b.toString());
} }
ApiConfig bestOne = clientCanAccess.get(0); ApiConfig bestOne = clientCanAccess.get(0);
@@ -431,7 +431,13 @@ public class ApiConfigService implements ApplicationListener<ContextRefreshedEve
} }
} }
} }
return Result.succ(bestOne); if (bestOne.allowAccess) {
return Result.succ(bestOne);
} else {
StringBuilder b = ThreadContext.getStringBuilder();
b.append("app ").append(app).append(" can't access matching route");
return Result.fail(b.toString());
}
} }
public Mono<Result<ApiConfig>> auth(ServerWebExchange exchange) { public Mono<Result<ApiConfig>> auth(ServerWebExchange exchange) {

View File

@@ -122,48 +122,48 @@ public class ServiceConfig {
} }
} }
private void checkPathPattern(Map<String, Set<ApiConfig>> pathPattern2apiConfigMap, boolean dedicatedLineRequest, String path, ArrayList<ApiConfig> result) { private void checkPathPattern(Map<String, Set<ApiConfig>> pathPattern2apiConfigMap, boolean dedicatedLineRequest, String path, ArrayList<ApiConfig> result) {
Set<Map.Entry<String, Set<ApiConfig>>> entries = pathPattern2apiConfigMap.entrySet(); Set<Map.Entry<String, Set<ApiConfig>>> entries = pathPattern2apiConfigMap.entrySet();
// boolean clear = false; // boolean clear = false;
for (Map.Entry<String, Set<ApiConfig>> entry : entries) { for (Map.Entry<String, Set<ApiConfig>> entry : entries) {
String pathPattern = entry.getKey(); String pathPattern = entry.getKey();
Set<ApiConfig> apiConfigs = entry.getValue(); Set<ApiConfig> apiConfigs = entry.getValue();
if (pathPattern.equals(path)) { if (pathPattern.equals(path)) {
for (ApiConfig ac : apiConfigs) { for (ApiConfig ac : apiConfigs) {
if (ac.allowAccess) { // if (ac.allowAccess) {
/*if (!clear && !result.isEmpty()) { /*if (!clear && !result.isEmpty()) {
result.clear(); result.clear();
clear = true; clear = true;
}*/ }*/
if (dedicatedLineRequest) { if (dedicatedLineRequest) {
if (ac.dedicatedLine) { if (ac.dedicatedLine) {
result.add(ac); result.add(ac);
} }
} else { } else {
if (!ac.dedicatedLine) { if (!ac.dedicatedLine) {
result.add(ac); result.add(ac);
}
} }
} }
} // }
/*if (clear && !result.isEmpty()) {
return;
}*/
} else if (UrlTransformUtils.ANT_PATH_MATCHER.match(pathPattern, path)) {
for (ApiConfig ac : apiConfigs) {
if (ac.allowAccess) {
if (dedicatedLineRequest) {
if (ac.dedicatedLine) {
result.add(ac);
}
} else {
if (!ac.dedicatedLine) {
result.add(ac);
}
}
}
}
} }
} // end for /*if (clear && !result.isEmpty()) {
} return;
}*/
} else if (UrlTransformUtils.ANT_PATH_MATCHER.match(pathPattern, path)) {
for (ApiConfig ac : apiConfigs) {
// if (ac.allowAccess) {
if (dedicatedLineRequest) {
if (ac.dedicatedLine) {
result.add(ac);
}
} else {
if (!ac.dedicatedLine) {
result.add(ac);
}
}
// }
}
}
} // end for
}
} }