From 7b5e3e05c53f6da8b69630f7e9ec2019eddc436a Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 04 七月 2024 10:44:53 +0800
Subject: [PATCH] bug修改
---
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java | 24 ++++++++++++++++--------
1 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
index 275d931..963d895 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -145,7 +145,7 @@
public LoginUserParent getLoginUserStudy() {
LoginUserParent userStudy = getLoginUserStudy(ServletUtils.getRequest());
if (null == userStudy) {
- throw new StudyLoginException("登录失效,请重新登录!", 505);
+ throw new StudyLoginException("登录失效,请重新登录!", 600);
}
return userStudy;
}
@@ -219,14 +219,18 @@
if (StringUtils.isNotEmpty(token)) {
String userkey = JwtUtils.getUserKeyStudy(token);
user = redisService.getCacheObject(getTokenKeyStudy(userkey));
- // 优先判断当前账号是否已在其他设备登录
- if (!user.getIsCanLogin()) {
- throw new StudyLoginException("当前登录账号在其他设备登录!", 505);
- }
// 再次判断登录状态是否已过期
- if (System.currentTimeMillis() > user.getExpireTime()) {
- throw new StudyLoginException("登录信息已过期,请重新登录!", 504);
- }
+// if (null == user) {
+// throw new StudyLoginException("登录信息已过期,请重新登录!", 504);
+// }
+// // 优先判断当前账号是否已在其他设备登录
+// if (!user.getIsCanLogin()) {
+// throw new StudyLoginException("当前登录账号在其他设备登录!", 505);
+// }
+// // 再次判断登录状态是否已过期
+// if (System.currentTimeMillis() > user.getExpireTime()) {
+// throw new StudyLoginException("登录信息已过期,请重新登录!", 504);
+// }
return user;
}
return user;
@@ -345,6 +349,10 @@
LoginUserParent redisUserInfo = JSONObject.parseObject(JSONObject.toJSONString(redisCacheUserInfo), LoginUserParent.class);
// 单点逻辑,如果当前用户已处于登录状态并再次登录,则清除该用户上一次登录token
if (dto.getUserid().equals(redisUserInfo.getUserid())) {
+ // 被挤账户 可登录状态 已经为 false时,跳出循环
+ if (!redisUserInfo.getIsCanLogin()) {
+ continue;
+ }
// 设置能否登录字段为 否,当该token登录时,isCanLogin为false表示账号被挤
redisUserInfo.setIsCanLogin(Boolean.FALSE);
redisService.setCacheObject(strKey, redisUserInfo, redisService.getExpire(strKey), TimeUnit.SECONDS);
--
Gitblit v1.7.1