redis反序列化问题
This commit is contained in:
@@ -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()) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
// 忽略异常
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user