From 5ac56c82c48200f5bfd82917d04279ff502a906f Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期四, 20 三月 2025 15:06:20 +0800
Subject: [PATCH] 高级安全防护

---
 src/main/java/com/jsh/erp/filter/LogCostFilter.java |   45 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/jsh/erp/filter/LogCostFilter.java b/src/main/java/com/jsh/erp/filter/LogCostFilter.java
index 8b8bee2..ae7a4a7 100644
--- a/src/main/java/com/jsh/erp/filter/LogCostFilter.java
+++ b/src/main/java/com/jsh/erp/filter/LogCostFilter.java
@@ -17,7 +17,10 @@
                               "/jshERP-boot/user/registerUser#/jshERP-boot/user/randomImage#" +
                               "/jshERP-boot/platformConfig/getPlatform#/jshERP-boot/v2/api-docs#/jshERP-boot/webjars#" +
                               "/jshERP-boot/systemConfig/static#/jshERP-boot/api/plugin/wechat/weChat/share#" +
-                              "/jshERP-boot/api/plugin/general-ledger/pdf/voucher#/jshERP-boot/api/plugin/tenant-statistics/tenantClean")})
+                              "/jshERP-boot/api/plugin/general-ledger/pdf/voucher#/jshERP-boot/api/plugin/tenant-statistics/tenantClean#" +
+                              "/jshERP-boot/swagger-ui.html#/jshERP-boot/swagger-resources#" +
+                              "/jshERP-boot/doc.html#/jshERP-boot/swagger-resources/**#" +
+                              "/jshERP-boot/v2/api-docs/**#/jshERP-boot/webjars/**")})
 public class LogCostFilter implements Filter {
 
     private static final String FILTER_PATH = "filterPath";
@@ -40,14 +43,26 @@
         HttpServletRequest servletRequest = (HttpServletRequest) request;
         HttpServletResponse servletResponse = (HttpServletResponse) response;
         String requestUrl = servletRequest.getRequestURI();
-        //具体,比如:处理若用户未登录,则跳转到登录页
-        Object userId = redisService.getObjectFromSessionByKey(servletRequest,"userId");
-        if(userId!=null) { //如果已登录,不阻止
+
+        if (isSwaggerRequest(requestUrl)) {
             chain.doFilter(request, response);
             return;
         }
-        if (requestUrl != null && (requestUrl.contains("/doc.html") ||
-            requestUrl.contains("/user/login") || requestUrl.contains("/user/register"))) {
+
+        if (requestUrl != null && (
+            requestUrl.contains("/doc.html") ||
+            requestUrl.contains("/swagger-ui.html") ||
+            requestUrl.contains("/swagger-resources") ||
+            requestUrl.contains("/v2/api-docs") ||
+            requestUrl.contains("/webjars/") ||
+            requestUrl.contains("/user/login") || 
+            requestUrl.contains("/user/register"))) {
+            chain.doFilter(request, response);
+            return;
+        }
+
+        Object userId = redisService.getObjectFromSessionByKey(servletRequest,"userId");
+        if(userId!=null) { //如果已登录,不阻止
             chain.doFilter(request, response);
             return;
         }
@@ -64,6 +79,24 @@
             servletResponse.getWriter().write("loginOut");
         }
     }
+    private boolean isSwaggerRequest(String requestUrl) {
+        return requestUrl != null && (
+                requestUrl.contains("/doc.html") ||
+                        requestUrl.contains("/swagger-ui.html") ||
+                        requestUrl.contains("/swagger-resources") ||
+                        requestUrl.contains("/v2/api-docs") ||
+                        requestUrl.contains("/webjars/") ||
+                        requestUrl.contains("/user/login") ||
+                        requestUrl.contains("/user/register") ||
+                        // 添加API尝试请求
+                        requestUrl.contains("/cloudContent/getByType") ||  // 允许未登录访问的API
+                        requestUrl.contains("/cloudContent/list")  ||         // 允许未登录访问的API
+                        requestUrl.contains("/sysDict/getByDictCodeAndItemText")  || //允许查询字典值API
+                        requestUrl.contains("/sms/send-code")  || //
+                        requestUrl.contains("/sms/login")||  //
+                        requestUrl.contains("/config-security/enable-list-all")  //
+        );
+    }
 
     @Override
     public void destroy() {

--
Gitblit v1.9.3