Browse Source

日志记录真实ip

zhc
review512jwy@163.com 4 weeks ago
parent
commit
eac52febd5
  1. 3
      dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/configurator/aspect/OperationLogAspect.java
  2. 40
      dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/IPUtils.java

3
dongjian-dashboard-back-controller/src/main/java/com/dongjian/dashboard/back/configurator/aspect/OperationLogAspect.java

@ -6,6 +6,7 @@ import com.dongjian.dashboard.back.common.config.DataSourceInterceptor;
import com.dongjian.dashboard.back.dao.ex.DashboardOperationLogMapperExt; import com.dongjian.dashboard.back.dao.ex.DashboardOperationLogMapperExt;
import com.dongjian.dashboard.back.model.DashboardOperationLog; import com.dongjian.dashboard.back.model.DashboardOperationLog;
import com.dongjian.dashboard.back.service.common.CommonOpt; import com.dongjian.dashboard.back.service.common.CommonOpt;
import com.dongjian.dashboard.back.util.IPUtils;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -69,7 +70,7 @@ public class OperationLogAspect {
logEntry.setUri(uri); logEntry.setUri(uri);
logEntry.setMethodName(method.getName()); logEntry.setMethodName(method.getName());
logEntry.setClassName(signature.getDeclaringTypeName()); logEntry.setClassName(signature.getDeclaringTypeName());
logEntry.setIpAddress(request.getRemoteAddr()); logEntry.setIpAddress(IPUtils.getClientIp(request));
String paramsJson = objectMapper.writeValueAsString(joinPoint.getArgs()); String paramsJson = objectMapper.writeValueAsString(joinPoint.getArgs());
logEntry.setRequestParams(paramsJson); logEntry.setRequestParams(paramsJson);
logEntry.setExecutionTimeMs(duration); logEntry.setExecutionTimeMs(duration);

40
dongjian-dashboard-back-util/src/main/java/com/dongjian/dashboard/back/util/IPUtils.java

@ -0,0 +1,40 @@
package com.dongjian.dashboard.back.util;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@Slf4j
public class IPUtils {
private IPUtils() {}
public static String getClientIp(HttpServletRequest request) {
if (request == null) {
return "";
}
String ip = request.getHeader("X-Forwarded-For");
if (StringUtils.isNotBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip.split(",")[0].trim();
}
ip = request.getHeader("X-Real-IP");
if (StringUtils.isNotBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("Proxy-Client-IP");
if (StringUtils.isNotBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("WL-Proxy-Client-IP");
if (StringUtils.isNotBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}
}
Loading…
Cancel
Save