fix(auth): 修复用户登录时旧token清理逻辑
- 在用户登录时检查并使旧token失效的逻辑中添加异常处理 - 为Redis操作和Sa-Token操作分别添加try-catch异常捕获 - 增加详细的日志记录来跟踪token清理过程 - 统一中文化日志信息中的token相关术语 - 确保即使在操作失败时也能继续执行后续清理步骤
This commit is contained in:
parent
e2fa8d7517
commit
44c04f81e2
|
|
@ -282,16 +282,27 @@ public class SysUserServiceImpl implements SysUserService {
|
|||
// 密码验证
|
||||
validatePassword(loginDto.getPassword(), sysUser);
|
||||
|
||||
// 检查用户是否已有token,如果有则使旧token失效
|
||||
// 检查用户是否已有 token,如果有则使旧 token 失效
|
||||
String oldToken = CacheManager.getTokenFromCache(sysUser.getUserName());
|
||||
if (oldToken != null && !oldToken.isEmpty()) {
|
||||
// 从Redis中删除旧token对应的登录信息
|
||||
redissonClient.getBucket("loginUser:" + oldToken).delete();
|
||||
// 使旧token失效
|
||||
cn.dev33.satoken.stp.StpUtil.logoutByTokenValue(oldToken);
|
||||
// 从缓存中移除旧token
|
||||
log.info("检测到用户 {} 已有旧 token: {}", sysUser.getUserName(), oldToken);
|
||||
// 从 Redis 中删除旧 token 对应的登录信息
|
||||
try {
|
||||
redissonClient.getBucket("loginUser:" + oldToken).delete();
|
||||
log.info("已删除 Redis 中的旧 token 数据:{}", oldToken);
|
||||
} catch (Exception e) {
|
||||
log.error("删除 Redis 中的旧 token 失败:{}", e.getMessage());
|
||||
}
|
||||
// 使旧 token 失效(Sa-Token 内部操作)
|
||||
try {
|
||||
cn.dev33.satoken.stp.StpUtil.logoutByTokenValue(oldToken);
|
||||
log.info("已通过 Sa-Token 使旧 token 失效:{}", oldToken);
|
||||
} catch (Exception e) {
|
||||
log.error("Sa-Token 使旧 token 失效失败:{}", e.getMessage());
|
||||
}
|
||||
// 从缓存中移除旧 token
|
||||
CacheManager.removeTokenFromCache(sysUser.getUserName());
|
||||
log.info("用户:{}的旧token已失效", sysUser.getUserName());
|
||||
log.info("用户:{}的旧 token 已完全失效", sysUser.getUserName());
|
||||
}
|
||||
|
||||
// 查询用户角色列表
|
||||
|
|
@ -843,16 +854,27 @@ public class SysUserServiceImpl implements SysUserService {
|
|||
sysUser = createUserByPhone(phone);
|
||||
}
|
||||
|
||||
// 检查用户是否已有token,如果有则使旧token失效
|
||||
// 检查用户是否已有 token,如果有则使旧 token 失效
|
||||
String oldToken = CacheManager.getTokenFromCache(sysUser.getUserName());
|
||||
if (oldToken != null && !oldToken.isEmpty()) {
|
||||
// 从Redis中删除旧token对应的登录信息
|
||||
redissonClient.getBucket("loginUser:" + oldToken).delete();
|
||||
// 使旧token失效
|
||||
cn.dev33.satoken.stp.StpUtil.logoutByTokenValue(oldToken);
|
||||
// 从缓存中移除旧token
|
||||
log.info("检测到用户 {} 已有旧 token: {}", sysUser.getUserName(), oldToken);
|
||||
// 从 Redis 中删除旧 token 对应的登录信息
|
||||
try {
|
||||
redissonClient.getBucket("loginUser:" + oldToken).delete();
|
||||
log.info("已删除 Redis 中的旧 token 数据:{}", oldToken);
|
||||
} catch (Exception e) {
|
||||
log.error("删除 Redis 中的旧 token 失败:{}", e.getMessage());
|
||||
}
|
||||
// 使旧 token 失效(Sa-Token 内部操作)
|
||||
try {
|
||||
cn.dev33.satoken.stp.StpUtil.logoutByTokenValue(oldToken);
|
||||
log.info("已通过 Sa-Token 使旧 token 失效:{}", oldToken);
|
||||
} catch (Exception e) {
|
||||
log.error("Sa-Token 使旧 token 失效失败:{}", e.getMessage());
|
||||
}
|
||||
// 从缓存中移除旧 token
|
||||
CacheManager.removeTokenFromCache(sysUser.getUserName());
|
||||
log.info("用户:{}的旧token已失效", sysUser.getUserName());
|
||||
log.info("用户:{}的旧 token 已完全失效", sysUser.getUserName());
|
||||
}
|
||||
|
||||
// 查询用户角色列表
|
||||
|
|
|
|||
Loading…
Reference in New Issue