diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/LimitFilter.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/LimitFilter.java index 3966c3c1..fb8d892b 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/LimitFilter.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/LimitFilter.java @@ -85,6 +85,7 @@ public class LimitFilter implements GlobalFilter, Ordered { appKey, routeId + appKey, + ip, ip + routeId, ip + appKey, ip + routeId + appKey, diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/manager/DefaultLimitConfigManager.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/manager/DefaultLimitConfigManager.java index 77bd78fc..bd4d42f4 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/manager/DefaultLimitConfigManager.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/manager/DefaultLimitConfigManager.java @@ -82,20 +82,25 @@ public class DefaultLimitConfigManager implements LimitConfigManager { if (StringUtils.isNotBlank(routeId) && StringUtils.isNotBlank(appKey) && StringUtils.isBlank(limitIp)) { keys.add(routeId.trim() + appKey.trim()); } - Set baseKeys = new HashSet<>(keys); // 根据ip限流 if (StringUtils.isBlank(routeId) && StringUtils.isBlank(appKey) && StringUtils.isNotBlank(limitIp)) { String[] ips = limitIp.split("\\,|\\,"); keys.addAll(Arrays.asList(ips)); } - // 根据ip+路由id限流 - // 根据ip+appKey限流 - // 根据ip+路由id+appKey限流 if (StringUtils.isNotBlank(limitIp)) { String[] ips = limitIp.split("\\,|\\,"); for (String ip : ips) { - for (String baseKey : baseKeys) { - keys.add(ip + baseKey); + // 根据ip+路由id限流 + if (StringUtils.isNotBlank(ip) && StringUtils.isNotBlank(routeId) && StringUtils.isBlank(appKey)) { + keys.add(routeId); + } + // 根据ip+appKey限流 + if (StringUtils.isNotBlank(ip) && StringUtils.isBlank(routeId) && StringUtils.isNotBlank(appKey)) { + keys.add(ip + appKey); + } + // 根据ip+路由id+appKey限流 + if (StringUtils.isNotBlank(ip) && StringUtils.isNotBlank(routeId) && StringUtils.isNotBlank(appKey)) { + keys.add(ip + routeId +appKey); } } }