From a1fc0b367c88d4631009b850ac2b0ee30e7e00a2 Mon Sep 17 00:00:00 2001 From: YanCh Date: Thu, 4 Dec 2025 16:15:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(security):=20=E5=85=BC=E5=AE=B9SSE=E5=BC=82?= =?UTF-8?q?=E6=AD=A5=E8=AF=B7=E6=B1=82=E5=A4=84=E7=90=86|=E5=9C=A8sse?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=97=B6=E4=BC=9A=E5=8F=91=E8=B5=B7=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=BC=82=E6=AD=A5=E7=9A=84=E8=AF=B7=E6=B1=82=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E9=9C=80=E8=A6=81=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在OAuth2拦截器中跳过ASYNC类型的请求处理 - 移除SaTokenConfiguration配置类 - 移除多余一个bean注册 --- .../OAuth2AutoConfiguration.java | 8 +++++ .../configuration/SaTokenConfiguration.java | 34 ------------------- ...ot.autoconfigure.AutoConfiguration.imports | 1 - 3 files changed, 8 insertions(+), 35 deletions(-) delete mode 100644 wemirr-platform-framework/security-spring-boot-starter/src/main/java/com/wemirr/framework/security/configuration/SaTokenConfiguration.java diff --git a/wemirr-platform-framework/security-spring-boot-starter/src/main/java/com/wemirr/framework/security/configuration/OAuth2AutoConfiguration.java b/wemirr-platform-framework/security-spring-boot-starter/src/main/java/com/wemirr/framework/security/configuration/OAuth2AutoConfiguration.java index c916c99e..68b4e9ba 100644 --- a/wemirr-platform-framework/security-spring-boot-starter/src/main/java/com/wemirr/framework/security/configuration/OAuth2AutoConfiguration.java +++ b/wemirr-platform-framework/security-spring-boot-starter/src/main/java/com/wemirr/framework/security/configuration/OAuth2AutoConfiguration.java @@ -27,6 +27,8 @@ import cn.dev33.satoken.same.SaSameUtil; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.StrUtil; import jakarta.annotation.Resource; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.core.Ordered; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; @@ -39,11 +41,17 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; public class OAuth2AutoConfiguration implements WebMvcConfigurer { @Resource private SecurityExtProperties extProperties; + @Resource + HttpServletRequest request; @Override public void addInterceptors(InterceptorRegistry registry) { // 注册 Sa-Token 拦截器,定义详细认证规则 registry.addInterceptor(new SaInterceptor(handler -> { + // 兼容sse关闭请求时的异步回调处理 + if (request != null && request.getDispatcherType() == DispatcherType.ASYNC) { + return; + } // 拦截的 path 列表,可以写多个 /** SaRouter.match("/**") .notMatch(extProperties.getDefaultIgnoreUrls()) diff --git a/wemirr-platform-framework/security-spring-boot-starter/src/main/java/com/wemirr/framework/security/configuration/SaTokenConfiguration.java b/wemirr-platform-framework/security-spring-boot-starter/src/main/java/com/wemirr/framework/security/configuration/SaTokenConfiguration.java deleted file mode 100644 index 0673e864..00000000 --- a/wemirr-platform-framework/security-spring-boot-starter/src/main/java/com/wemirr/framework/security/configuration/SaTokenConfiguration.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.wemirr.framework.security.configuration; - -import cn.dev33.satoken.filter.SaTokenContextFilterForJakartaServlet; -import jakarta.servlet.DispatcherType; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.Ordered; - -import java.util.EnumSet; - -/** - * @author xJh - * @since 2025/12/03 - * Sa-Token 上下文配置 - * https://gitee.com/dromara/sa-token/issues/IC4XFE#note_41189047_link - * 修复SSE报错satoken未设置上下文 - * sse只有初始化连接是同步操作。请求会经过filter初始化SaTokenContext。但是其他操作不一定,可能是异步的。filter不会过滤填充上下文。解决办法是手动注册Filter,然后设置允许异步处理 - **/ -@Configuration -public class SaTokenConfiguration { - - @Bean - public FilterRegistrationBean saTokenContextFilterForJakartaServlet() { - FilterRegistrationBean bean = - new FilterRegistrationBean<>(new SaTokenContextFilterForJakartaServlet()); - bean.addUrlPatterns("/*"); - bean.setOrder(Ordered.HIGHEST_PRECEDENCE); - bean.setAsyncSupported(true); - bean.setDispatcherTypes(EnumSet.of(DispatcherType.ASYNC, DispatcherType.REQUEST)); - return bean; - } - -} diff --git a/wemirr-platform-framework/security-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/wemirr-platform-framework/security-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 52a441c8..fffab061 100644 --- a/wemirr-platform-framework/security-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/wemirr-platform-framework/security-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -2,5 +2,4 @@ com.wemirr.framework.security.configuration.OAuth2AutoConfiguration com.wemirr.framework.security.configuration.OAuth2ExceptionHandler com.wemirr.framework.security.configuration.StpInterfaceRedisImpl com.wemirr.framework.security.configuration.feign.AutoSaSameConfiguration -com.wemirr.framework.security.configuration.SaTokenConfiguration -- Gitee