lyhzzz hai 1 ano
pai
achega
33a4757c14

+ 2 - 1
src/main/java/com/fdkankan/manage/aop/VisitLogInterceptor.java

@@ -9,6 +9,7 @@ import cn.hutool.http.useragent.UserAgentUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.manage.common.IpUtils;
 import com.fdkankan.manage.config.SaTokenConfigure;
 import com.fdkankan.manage.entity.OperLog;
 import com.fdkankan.manage.entity.SysUser;
@@ -62,7 +63,7 @@ public class VisitLogInterceptor {
 		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
 
 		//获取客户端ip
-		String clientIP = ServletUtil.getClientIP(request);
+		String clientIP = IpUtils.getIpAddr(request);
 
 		//获取uri
 		String uri = request.getRequestURI();

+ 31 - 0
src/main/java/com/fdkankan/manage/common/IpUtils.java

@@ -0,0 +1,31 @@
+package com.fdkankan.manage.common;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class IpUtils {
+
+    public static String getIpAddr(HttpServletRequest request) {
+        String ipAddress = null;
+        ipAddress = request.getHeader("x-forwarded-for");
+        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+            ipAddress = request.getHeader("Proxy-Client-IP");
+        }
+        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+            ipAddress = request.getHeader("WL-Proxy-Client-IP");
+        }
+        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+            ipAddress = request.getRemoteAddr();
+        }
+
+// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
+        if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
+            // = 15
+            if (ipAddress.indexOf(",") > 0) {
+                ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
+            }
+        }
+        // 或者这样也行,对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
+//return ipAddress!=null&&!"".equals(ipAddress)?ipAddress.split(",")[0]:null;
+        return ipAddress;
+    }
+}

+ 4 - 1
src/main/java/com/fdkankan/manage/service/impl/FeedbackServiceImpl.java

@@ -1,10 +1,12 @@
 package com.fdkankan.manage.service.impl;
 
+import cn.hutool.core.net.Ipv4Util;
 import cn.hutool.extra.servlet.ServletUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.common.IpUtils;
 import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.common.RedisKeyUtil;
 import com.fdkankan.manage.common.ResultCode;
@@ -24,6 +26,7 @@ import com.fdkankan.redis.util.RedisUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import sun.net.util.IPAddressUtil;
 
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
@@ -141,7 +144,7 @@ public class FeedbackServiceImpl extends ServiceImpl<IFeedbackMapper, Feedback>
     @Override
     public Object getDefaultAddress(HttpServletRequest request) {
         //获取ip地址
-        String clientIP = request.getRemoteAddr();
+        String clientIP = IpUtils.getIpAddr(request);
         if(StringUtils.isBlank(clientIP)){
             return new IpAddressVo();
         }