From 940caedea862fedef87865d75363c732897f8396 Mon Sep 17 00:00:00 2001 From: wanghanlin <1533525126@qq.com> Date: Tue, 18 Aug 2026 10:57:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=83=A8=E7=BD=B2):=20=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E9=9D=99=E6=80=81=E8=B5=84=E6=BA=90=E5=85=8D=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E4=B8=8E=E6=89=93=E5=8C=85=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pom.xml 将 static/** 单独作为资源目录,关闭 filtering 并指定 targetPath 避免平铺到 classes 根目录 - JwtAuthFilter 跳过首页与静态资源路径,避免管理后台密钥误校验产生 WARN 日志 - SecurityConfig 放行 /、/index.html、/assets/**、/sdk/** 等静态资源与首页 --- pom.xml | 9 +++++++++ .../com/wok/supportbot/security/JwtAuthFilter.java | 12 +++++++++--- .../com/wok/supportbot/security/SecurityConfig.java | 3 +++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 049bd72..08f9462 100644 --- a/pom.xml +++ b/pom.xml @@ -203,6 +203,15 @@ src/main/resources true + + static/** + + + + src/main/resources/static + + static + false diff --git a/src/main/java/com/wok/supportbot/security/JwtAuthFilter.java b/src/main/java/com/wok/supportbot/security/JwtAuthFilter.java index f573702..504d168 100644 --- a/src/main/java/com/wok/supportbot/security/JwtAuthFilter.java +++ b/src/main/java/com/wok/supportbot/security/JwtAuthFilter.java @@ -63,13 +63,19 @@ public class JwtAuthFilter extends OncePerRequestFilter { } /** - * 跳过 SDK 路径 — 这些路径由 SdkAuthFilter 使用独立的 jwt.sdk-secret 验签, - * 不应由本 Filter 用管理后台密钥重复验证,避免产生误报 WARN 日志。 + * 跳过 SDK 路径和静态资源路径 — 这些路径要么由 SdkAuthFilter 使用独立的 jwt.sdk-secret 验签, + * 要么是不需要认证的首页/前端资源,不应由本 Filter 用管理后台密钥重复验证,避免产生误报 WARN 日志。 */ @Override protected boolean shouldNotFilter(HttpServletRequest request) { String path = request.getServletPath(); - return path.startsWith("/ai/"); + return path.startsWith("/ai/") + || path.isEmpty() || path.equals("/") + || path.equals("/index.html") + || path.startsWith("/assets/") + || path.startsWith("/sdk/") + || path.equals("/favicon.ico") + || path.equals("/favicon.svg"); } /** diff --git a/src/main/java/com/wok/supportbot/security/SecurityConfig.java b/src/main/java/com/wok/supportbot/security/SecurityConfig.java index 926d3bc..e850e1a 100644 --- a/src/main/java/com/wok/supportbot/security/SecurityConfig.java +++ b/src/main/java/com/wok/supportbot/security/SecurityConfig.java @@ -44,6 +44,9 @@ public class SecurityConfig { .sessionManagement(s -> s.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .authorizeHttpRequests(auth -> auth // ========== 公开接口(无需认证) ========== + // 静态资源与首页(放在最前面,优先匹配) + .requestMatchers("/", "/index.html", "/favicon.ico", "/favicon.svg").permitAll() + .requestMatchers("/assets/**", "/sdk/**").permitAll() // SDK 对话接口 // SdkAuthFilter 作为 Servlet Filter 已在 SecurityFilterChain 之前执行, // 校验通过时已放行,校验失败时已返回 401,不会到达此处。