From 061e62431ece59b6ef24ce23ce02b1e59694b65f Mon Sep 17 00:00:00 2001 From: jiang Date: Mon, 11 Nov 2024 16:19:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PasswordValidatorService.java | 83 +++++++++++-------- 1 file changed, 50 insertions(+), 33 deletions(-) diff --git a/bonus-auth/src/main/java/com/bonus/auth/service/PasswordValidatorService.java b/bonus-auth/src/main/java/com/bonus/auth/service/PasswordValidatorService.java index daa5696..c9e655c 100644 --- a/bonus-auth/src/main/java/com/bonus/auth/service/PasswordValidatorService.java +++ b/bonus-auth/src/main/java/com/bonus/auth/service/PasswordValidatorService.java @@ -281,49 +281,66 @@ public class PasswordValidatorService { } public void ipFilter(SysUser user){ - List> cacheList = redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST); + // 获取黑名单列表 + List> cacheList = redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST); + // 获取客户端的 IP 地址 String ip = IpUtils.getIpAddr(); - for (Map map : cacheList) { - String ipAddress = map.containsKey("ipAddress") ? map.get("ipAddress").toString() : null; - String ipRangeEnd = map.containsKey("ipRangeEnd") ?map.get("ipRangeEnd").toString(): null; - String ipRangeStart = map.containsKey("ipRangeStart")?map.get("ipRangeStart").toString():null; - String accessStartTime =map.containsKey("accessStartTime")? map.get("accessStartTime").toString():null; - String accessEndTime = map.containsKey("accessEndTime")?map.get("accessEndTime").toString():null; - if (ObjectUtils.isEmpty(ipAddress)){ - if (isIpInRange(ip, ipRangeStart, ipRangeEnd)){ - if (ObjectUtils.isNotEmpty(accessStartTime)){ - boolean currentTimeInRange = isCurrentTimeInRange(accessStartTime, accessEndTime); - if (!currentTimeInRange){ - // 异常处理 - }else { - //正常处理 - } - }else { - //正常处理 - } + // 遍历黑名单 + for (Map map : cacheList) { + String ipAddress = (String) map.getOrDefault("ipAddress", null); + String ipRangeEnd = (String) map.getOrDefault("ipRangeEnd", null); + String ipRangeStart = (String) map.getOrDefault("ipRangeStart", null); + String accessStartTime = (String) map.getOrDefault("accessStartTime", null); + String accessEndTime = (String) map.getOrDefault("accessEndTime", null); + // 如果 ipAddress 为空,检查是否在 ip 范围内 + if (ObjectUtils.isEmpty(ipAddress)) { + if (isIpInRange(ip, ipRangeStart, ipRangeEnd)) { + handleAccessTimeCheck(accessStartTime, accessEndTime); } - }else { - if (ipAddress.equals(ip)){ - if (ObjectUtils.isNotEmpty(accessStartTime)){ - boolean currentTimeInRange = isCurrentTimeInRange(accessStartTime, accessEndTime); - if (!currentTimeInRange){ - // 异常处理 - }else { - //正常处理 - } - }else { - //正常处理 - } - } + } else if (ipAddress.equals(ip)) { + handleAccessTimeCheck(accessStartTime, accessEndTime); } } - //异常处理 } + /** + * 检查当前时间是否在有效的访问时间范围内 + * @param accessStartTime 访问开始时间 + * @param accessEndTime 访问结束时间 + */ + private void handleAccessTimeCheck(String accessStartTime, String accessEndTime) { + if (ObjectUtils.isNotEmpty(accessStartTime)) { + boolean currentTimeInRange = isCurrentTimeInRange(accessStartTime, accessEndTime); + if (!currentTimeInRange) { + handleException(); // 异常处理 + } else { + handleNormalProcess(); // 正常处理 + } + } else { + handleNormalProcess(); // 正常处理 + } + } + + /** + * 处理异常情况 + */ + private void handleException() { + // 异常处理的具体逻辑 + System.out.println("IP access is outside the allowed time range or other error occurred."); + } + + /** + * 处理正常情况 + */ + private void handleNormalProcess() { + // 正常处理的具体逻辑 + System.out.println("IP access is within the allowed time range."); + } + /** * 检查给定的IP地址是否在指定的网段区间内 *