gateway tomcat去除

This commit is contained in:
2025-12-22 17:03:37 +08:00
parent e09817015e
commit b023bec261
55 changed files with 1926 additions and 260 deletions

View File

@@ -100,14 +100,13 @@ public class GatewayAuthConfig {
List<GrantedAuthority> authorities = new ArrayList<>();
try {
String authHeader = request.getHeader("Authorization");
logger.info("Authorization header: {}", authHeader != null ? "Bearer ***" : "null");
String token = extractToken(request);
logger.debug("提取到Token: {}", token != null ? "***" : "null");
if (StringUtils.hasText(authHeader) && authHeader.startsWith(BEARER_PREFIX)) {
String token = authHeader.substring(BEARER_PREFIX.length());
if (StringUtils.hasText(token)) {
String cacheKey = LOGIN_TOKEN_PREFIX + token;
LoginDomain login = redisService.get(cacheKey, LoginDomain.class);
logger.info("Redis key: {}, login: {}", cacheKey, login != null ? "loaded" : "null");
logger.debug("Redis key: {}, login: {}", cacheKey, login != null ? "loaded" : "null");
if (login != null) {
if (login.getUserPermissions() != null) {
@@ -118,7 +117,7 @@ public class GatewayAuthConfig {
}
}
}
logger.info("加载用户权限: {} 个", authorities.size());
logger.debug("加载用户权限: {} 个", authorities.size());
}
}
} catch (Exception e) {
@@ -127,5 +126,25 @@ public class GatewayAuthConfig {
return authorities;
}
/**
* 从请求头或URL参数提取Token
*/
private String extractToken(HttpServletRequest request) {
// 1. 优先从请求头获取
String authHeader = request.getHeader("Authorization");
if (StringUtils.hasText(authHeader) && authHeader.startsWith(BEARER_PREFIX)) {
return authHeader.substring(BEARER_PREFIX.length()).trim();
}
// 2. 从URL参数获取用于WebSocket连接
String tokenParam = request.getParameter("token");
if (StringUtils.hasText(tokenParam)) {
logger.debug("从URL参数获取Token");
return tokenParam.trim();
}
return null;
}
}
}

View File

@@ -127,7 +127,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
// 从Redis加载 LoginDomain并将权限装配到 Spring Security 上下文
if (redisService != null) {
Object obj = redisService.get(REDIS_LOGIN_PREFIX + userId);
Object obj = redisService.get(REDIS_LOGIN_PREFIX + token);
if (obj instanceof LoginDomain loginDomain) {
// 组装权限码 authorities已存在
List<SimpleGrantedAuthority> permAuthorities = null;