From 5ef6c105aca5bd7c0c63ce3240fbe82c2e07e8f7 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期三, 18 三月 2026 13:46:05 +0800
Subject: [PATCH] lsh#// rsf-server本机调用直通,不需要Token

---
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/security/filter/AppIdAuthenticationFilter.java |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/security/filter/AppIdAuthenticationFilter.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/security/filter/AppIdAuthenticationFilter.java
index 6e7d149..4183d4f 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/security/filter/AppIdAuthenticationFilter.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/security/filter/AppIdAuthenticationFilter.java
@@ -16,6 +16,8 @@
 import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 
 /**
  * AppId鍜孉ppSecret璁よ瘉杩囨护鍣�
@@ -43,6 +45,13 @@
         // 妫�鏌ユ槸鍚︿负璁よ瘉璇锋眰锛堝鑾峰彇token锛�
         if (isAuthRequest(requestURI)) {
             // 瀵逛簬璁よ瘉璇锋眰锛屽厑璁搁�氳繃
+            filterChain.doFilter(request, response);
+            return;
+        }
+
+        // rsf-server鏈満璋冪敤鐩撮�氾紝涓嶉渶瑕乀oken
+        if (isRequestFromRsfServer(request)) {
+            request.setAttribute(Constants.REQUEST_ATTR_APP_ID, "rsf-server");
             filterChain.doFilter(request, response);
             return;
         }
@@ -104,6 +113,28 @@
 //               requestURI.contains("/auth/login");
     }
 
+    /**
+     * 鍒ゆ柇鏄惁鏉ヨ嚜rsf-server鐨勫唴閮ㄨ姹�
+     * 绾﹀畾锛氬悓鏈洪儴缃叉椂锛宺sf-server閫氳繃127.0.0.1/::1璁块棶open-api
+     */
+    private boolean isRequestFromRsfServer(HttpServletRequest request) {
+        String remoteAddr = request.getRemoteAddr();
+        if (StringUtils.isBlank(remoteAddr)) {
+            return false;
+        }
+
+        if ("127.0.0.1".equals(remoteAddr) || "::1".equals(remoteAddr) || "0:0:0:0:0:0:0:1".equals(remoteAddr)) {
+            return true;
+        }
+
+        try {
+            InetAddress address = InetAddress.getByName(remoteAddr);
+            return address.isLoopbackAddress() || address.isAnyLocalAddress();
+        } catch (UnknownHostException e) {
+            return false;
+        }
+    }
+
     @Override
     protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
         String requestURI = request.getRequestURI();
@@ -118,4 +149,4 @@
                requestURI.contains("/v3/api-docs");
     }
 
-}
\ No newline at end of file
+}

--
Gitblit v1.9.1