用户登录问题修改

This commit is contained in:
jiang 2024-11-11 16:19:39 +08:00
parent 2635e025ca
commit 061e62431e
1 changed files with 50 additions and 33 deletions

View File

@ -281,48 +281,65 @@ public class PasswordValidatorService {
} }
public void ipFilter(SysUser user){ public void ipFilter(SysUser user){
// 获取黑名单列表
List<Map<String, Object>> cacheList = redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST); List<Map<String, Object>> cacheList = redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST);
// 获取客户端的 IP 地址 // 获取客户端的 IP 地址
String ip = IpUtils.getIpAddr(); String ip = IpUtils.getIpAddr();
// 遍历黑名单
for (Map<String, Object> map : cacheList) { for (Map<String, Object> map : cacheList) {
String ipAddress = map.containsKey("ipAddress") ? map.get("ipAddress").toString() : null; String ipAddress = (String) map.getOrDefault("ipAddress", null);
String ipRangeEnd = map.containsKey("ipRangeEnd") ?map.get("ipRangeEnd").toString(): null; String ipRangeEnd = (String) map.getOrDefault("ipRangeEnd", null);
String ipRangeStart = map.containsKey("ipRangeStart")?map.get("ipRangeStart").toString():null; String ipRangeStart = (String) map.getOrDefault("ipRangeStart", null);
String accessStartTime =map.containsKey("accessStartTime")? map.get("accessStartTime").toString():null; String accessStartTime = (String) map.getOrDefault("accessStartTime", null);
String accessEndTime = map.containsKey("accessEndTime")?map.get("accessEndTime").toString():null; String accessEndTime = (String) map.getOrDefault("accessEndTime", null);
// 如果 ipAddress 为空检查是否在 ip 范围内
if (ObjectUtils.isEmpty(ipAddress)) { if (ObjectUtils.isEmpty(ipAddress)) {
if (isIpInRange(ip, ipRangeStart, ipRangeEnd)) { if (isIpInRange(ip, ipRangeStart, ipRangeEnd)) {
handleAccessTimeCheck(accessStartTime, accessEndTime);
}
} else if (ipAddress.equals(ip)) {
handleAccessTimeCheck(accessStartTime, accessEndTime);
}
}
}
/**
* 检查当前时间是否在有效的访问时间范围内
* @param accessStartTime 访问开始时间
* @param accessEndTime 访问结束时间
*/
private void handleAccessTimeCheck(String accessStartTime, String accessEndTime) {
if (ObjectUtils.isNotEmpty(accessStartTime)) { if (ObjectUtils.isNotEmpty(accessStartTime)) {
boolean currentTimeInRange = isCurrentTimeInRange(accessStartTime, accessEndTime); boolean currentTimeInRange = isCurrentTimeInRange(accessStartTime, accessEndTime);
if (!currentTimeInRange) { if (!currentTimeInRange) {
// 异常处理 handleException(); // 异常处理
} else { } else {
//正常处理 handleNormalProcess(); // 正常处理
} }
} else { } else {
//正常处理 handleNormalProcess(); // 正常处理
}
} }
} /**
}else { * 处理异常情况
if (ipAddress.equals(ip)){ */
if (ObjectUtils.isNotEmpty(accessStartTime)){ private void handleException() {
boolean currentTimeInRange = isCurrentTimeInRange(accessStartTime, accessEndTime); // 异常处理的具体逻辑
if (!currentTimeInRange){ System.out.println("IP access is outside the allowed time range or other error occurred.");
// 异常处理
}else {
//正常处理
}
}else {
//正常处理
}
}
}
}
//异常处理
} }
/**
* 处理正常情况
*/
private void handleNormalProcess() {
// 正常处理的具体逻辑
System.out.println("IP access is within the allowed time range.");
}
/** /**
* 检查给定的IP地址是否在指定的网段区间内 * 检查给定的IP地址是否在指定的网段区间内