redis反序列化问题

This commit is contained in:
2025-12-19 19:04:43 +08:00
parent 1131a34c6e
commit 566d03491b
15 changed files with 123 additions and 140 deletions

View File

@@ -78,7 +78,7 @@ public class HttpLoginArgumentResolver implements HandlerMethodArgumentResolver
// 从Redis中获取LoginDomain
String userId = tokenParser.getUserIdFromToken(token);
String redisKey = REDIS_LOGIN_PREFIX + userId;
LoginDomain loginDomain = (LoginDomain) redisService.get(redisKey);
LoginDomain loginDomain = redisService.get(redisKey, LoginDomain.class);
if (loginDomain == null) {
if (httpLogin.required()) {

View File

@@ -22,7 +22,6 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.fastjson2.JSON;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.xyzh.common.core.domain.LoginDomain;
@@ -107,18 +106,8 @@ public class GatewayAuthConfig {
if (StringUtils.hasText(authHeader) && authHeader.startsWith(BEARER_PREFIX)) {
String token = authHeader.substring(BEARER_PREFIX.length());
String cacheKey = LOGIN_TOKEN_PREFIX + token;
Object obj = redisService.get(cacheKey);
logger.info("Redis key: {}, obj type: {}", cacheKey, obj != null ? obj.getClass().getName() : "null");
LoginDomain login = null;
if (obj instanceof LoginDomain) {
login = (LoginDomain) obj;
} else if (obj instanceof String) {
// Redis 返回的是 JSON 字符串,需要反序列化
login = JSON.parseObject((String) obj, LoginDomain.class);
logger.info("从 JSON 反序列化 LoginDomain");
}
LoginDomain login = redisService.get(cacheKey, LoginDomain.class);
logger.info("Redis key: {}, login: {}", cacheKey, login != null ? "loaded" : "null");
if (login != null) {
if (login.getUserPermissions() != null) {

View File

@@ -8,8 +8,6 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import org.xyzh.common.core.domain.LoginDomain;
import org.xyzh.common.redis.service.RedisService;
import com.alibaba.fastjson2.JSON;
import jakarta.annotation.PostConstruct;
import jakarta.servlet.http.HttpServletRequest;
@@ -48,13 +46,7 @@ public class LoginUtil {
try {
String cacheKey = LOGIN_TOKEN_PREFIX + token;
Object obj = instance.redisService.get(cacheKey);
if (obj instanceof LoginDomain) {
return (LoginDomain) obj;
} else if (obj instanceof String) {
// Redis 返回的是 JSON 字符串,需要反序列化
return JSON.parseObject((String) obj, LoginDomain.class);
}
return instance.redisService.get(cacheKey, LoginDomain.class);
} catch (Exception e) {
// 忽略异常
}