update 优化 将框架内的 sse ws 统一走认证处理器 不再自行排除编码处理

This commit is contained in:
疯狂的狮子Li
2026-05-28 15:15:14 +08:00
parent 4efde9965f
commit 066a07875c
9 changed files with 144 additions and 51 deletions
@@ -3,12 +3,14 @@ package org.dromara.gateway.filter;
import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.exception.NotPermissionException;
import cn.dev33.satoken.filter.SaServletFilter;
import cn.dev33.satoken.filter.SaTokenContextFilterForJakartaServlet;
import cn.dev33.satoken.httpauth.basic.SaHttpBasicUtil;
import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import cn.dev33.satoken.util.SaTokenConsts;
import jakarta.servlet.DispatcherType;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.core.constant.HttpStatus;
@@ -18,11 +20,14 @@ import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.gateway.config.properties.IgnoreWhiteProperties;
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 org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.EnumSet;
import java.util.List;
/**
@@ -41,6 +46,25 @@ public class AuthFilter implements WebMvcConfigurer {
this.ignoreWhite = ignoreWhite;
}
/**
* 重新注册 Sa-Token 上下文过滤器,使其覆盖 Servlet 异步分发。
*
* @param filter Sa-Token 官方上下文过滤器
* @return 过滤器注册配置
*/
@Bean
public FilterRegistrationBean<SaTokenContextFilterForJakartaServlet> saTokenContextFilterRegistration(
SaTokenContextFilterForJakartaServlet filter) {
FilterRegistrationBean<SaTokenContextFilterForJakartaServlet> registration = new FilterRegistrationBean<>();
registration.setFilter(filter);
registration.setName("saTokenContextFilterForServlet");
registration.addUrlPatterns("/*");
registration.setDispatcherTypes(EnumSet.of(DispatcherType.REQUEST, DispatcherType.ASYNC, DispatcherType.ERROR));
registration.setAsyncSupported(true);
registration.setOrder(Ordered.HIGHEST_PRECEDENCE);
return registration;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SaInterceptor(handler -> SaRouter.match("/**")
@@ -62,7 +86,7 @@ public class AuthFilter implements WebMvcConfigurer {
validateClientAccessRules(request);
})))
.addPathPatterns("/**")
.excludePathPatterns("/favicon.ico", "/actuator", "/actuator/**", "/resource/sse" , "/error");
.excludePathPatterns("/favicon.ico", "/actuator", "/actuator/**", "/error");
}
/**