From 60d43bf359dafeda1d6da654a2566bf4f764a2ec Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 07 八月 2020 08:13:15 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/config/AdminInterceptor.java |    5 ++
 src/main/java/com/zy/common/utils/IpTools.java           |   94 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 99 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/common/config/AdminInterceptor.java b/src/main/java/com/zy/common/config/AdminInterceptor.java
index 80e61c5..b42a596 100644
--- a/src/main/java/com/zy/common/config/AdminInterceptor.java
+++ b/src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -64,6 +64,11 @@
                 }
             }
         }
+        // 鐧藉悕鍗�
+//        if (IpTools.gainRealIp(request).equals("127.0.0.1")) {
+//            request.setAttribute("userId", 9527);
+//            return true;
+//        }
         // 璺ㄥ煙璁剧疆
         // response.setHeader("Access-Control-Allow-Origin", "*");
         HandlerMethod handlerMethod = (HandlerMethod) handler;
diff --git a/src/main/java/com/zy/common/utils/IpTools.java b/src/main/java/com/zy/common/utils/IpTools.java
new file mode 100644
index 0000000..30a2592
--- /dev/null
+++ b/src/main/java/com/zy/common/utils/IpTools.java
@@ -0,0 +1,94 @@
+package com.zy.common.utils;
+
+import com.core.common.Cools;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.servlet.http.HttpServletRequest;
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.util.Enumeration;
+
+/**
+ * Created by vincent on 2020/8/6
+ */
+@Slf4j
+public class IpTools {
+
+    public static String gainRealIp(HttpServletRequest request) {
+        String ipAddress = "";
+        try {
+            if (request == null) {
+                return ipAddress;
+            }
+
+            //鎺掗櫎鏈湴娴嬭瘯
+            if ("127.0.0.1".equals(request.getServerName()) || "localhost".equals(request.getServerName())) {
+                ipAddress = "127.0.0.1";
+                return ipAddress;
+            }
+
+            ipAddress = request.getRemoteAddr();
+            if (Cools.isEmpty(ipAddress)) {
+                ipAddress = request.getRemoteHost();
+            } else {
+                return ipAddress;
+            }
+
+            if (!Cools.isEmpty(ipAddress)) {
+                return ipAddress;
+            }
+
+            // 鑾峰彇鐪熷疄ip,鎺掗櫎浠g悊ip
+            ipAddress = request.getHeader("Referer");
+
+            // 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)) {
+                // 鏇存崲niginx浠g悊
+                // ipAddress = request.getRemoteAddr();
+                ipAddress = request.getHeader("X-Real-IP");
+                if (ipAddress != null && (ipAddress.equals("" + "") || ipAddress.endsWith("0:0:0:0:0:0:0:1"))) {
+                    // 鏍规嵁缃戝崱鍙栨湰鏈洪厤缃殑IP
+
+                    // linux涓嬩篃鍙互鑾峰彇鏈湴鐨刬p鍦板潃
+                    Enumeration<?> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
+                    InetAddress ip;
+                    while (allNetInterfaces.hasMoreElements()) {
+                        NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
+                        Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
+                        while (addresses.hasMoreElements()) {
+                            ip = addresses.nextElement();
+                            if (ip instanceof Inet4Address) {
+                                // 鑾峰彇鐪熷疄鐨処p鍦板潃
+                                ipAddress = ip.getHostAddress();
+
+                            }
+                        }
+                    }
+
+                }
+
+            }
+            // 瀵逛簬閫氳繃澶氫釜浠g悊鐨勬儏鍐碉紝绗竴涓狪P涓哄鎴风鐪熷疄IP,澶氫釜IP鎸夌収','鍒嗗壊"***.***.***.***".length()=15
+            if (ipAddress != null && ipAddress.length() > 15) {
+
+                if (ipAddress.indexOf(",") > 0) {
+                    ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
+                }
+            }
+
+        } catch (Exception e) {
+            log.warn("ip{},瑙f瀽寮傚父", ipAddress, e);
+        }
+        return ipAddress;
+
+    }
+
+}

--
Gitblit v1.9.1