danchaofan1412 5 лет назад
Родитель
Сommit
cf98cdf067

+ 20 - 4
framework-boot/src/main/java/com/mrxu/framework/boot/entity/RpcRequestInfo.java

@@ -20,12 +20,28 @@ public class RpcRequestInfo {
         rpcRequestInfo.remove();
     }
 
-    private String trackId;
+    protected String trackId;
 
-    private String merchantId;
+    protected String merchantId;
 
-    private String username;
+    protected String username;
 
-    private String ip;
+    protected String ip;
+
+    public static String getTrackId() {
+       return get().trackId;
+    }
+
+    public static String getMerchantId() {
+        return get().merchantId;
+    }
+
+    public static String getUsername() {
+        return get().username;
+    }
+
+    public static String getIp() {
+        return get().ip;
+    }
 
 }

+ 43 - 2
framework-boot/src/main/java/com/mrxu/framework/boot/web/ServletUtils.java

@@ -10,12 +10,12 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.*;
 
 /**
  * 客户端工具类
- *
- * @author Demon-HY
  */
 public class ServletUtils {
 
@@ -149,4 +149,45 @@ public class ServletUtils {
         }
         return retVal;
     }
+
+    public static String getClientIp(HttpServletRequest request) {
+        String ipAddress = null;
+        // ipAddress = this.getRequest().getRemoteAddr();
+        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();
+            if (ipAddress.equals("127.0.0.1")) {
+                ipAddress = getLocalIp();
+            }
+            if (ipAddress.equals("0:0:0:0:0:0:0:1")) {
+                ipAddress = "127.0.0.1";
+            }
+
+        }
+        // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
+        if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
+            // = 15
+            if (ipAddress.indexOf(",") > 0) {
+                ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
+            }
+        }
+        return ipAddress;
+    }
+
+    public static String getLocalIp() {
+        // 根据网卡取本机配置的IP
+        InetAddress inet = null;
+        try {
+            inet = InetAddress.getLocalHost();
+        } catch (UnknownHostException e) {
+            e.printStackTrace();
+        }
+        return inet.getHostAddress();
+    }
 }