From 6e33e3f0ee952d768026fda82dc0000204e21c72 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Tue, 18 Feb 2025 09:46:05 +0800
Subject: [PATCH] 222
---
ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java | 22 +++++++++++++++++++++-
1 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java b/ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java
index 5250cf1..cf08c40 100644
--- a/ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java
+++ b/ard-framework/src/main/java/com/ard/framework/web/service/TokenService.java
@@ -45,6 +45,10 @@
@Value("${token.expireTime}")
private int expireTime;
+ // 是否允许账户多终端同时登录(true允许 false不允许)
+ @Value("${token.soloLogin}")
+ private boolean soloLogin;
+
protected static final long MILLIS_SECOND = 1000;
protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND;
@@ -96,12 +100,17 @@
/**
* 删除用户身份信息
*/
- public void delLoginUser(String token)
+ public void delLoginUser(String token, Long userId)
{
if (StringUtils.isNotEmpty(token))
{
String userKey = getTokenKey(token);
redisCache.deleteObject(userKey);
+ }
+ if (!soloLogin && StringUtils.isNotNull(userId))
+ {
+ String userIdKey = getUserIdKey(userId);
+ redisCache.deleteObject(userIdKey);
}
}
@@ -151,6 +160,12 @@
// 根据uuid将loginUser缓存
String userKey = getTokenKey(loginUser.getToken());
redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
+ if (!soloLogin)
+ {
+ // 缓存用户唯一标识,防止同一帐号,同时登录
+ String userIdKey = getUserIdKey(loginUser.getUser().getUserId());
+ redisCache.setCacheObject(userIdKey, userKey, expireTime, TimeUnit.MINUTES);
+ }
}
/**
@@ -228,4 +243,9 @@
{
return CacheConstants.LOGIN_TOKEN_KEY + uuid;
}
+
+ private String getUserIdKey(Long userId)
+ {
+ return Constants.LOGIN_USERID_KEY + userId;
+ }
}
--
Gitblit v1.9.3