|
@@ -46,6 +46,11 @@ public class TokenService
|
|
|
@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;
|
|
@@ -97,15 +102,38 @@ public class TokenService
|
|
|
/**
|
|
|
* 删除用户身份信息
|
|
|
*/
|
|
|
- public void delLoginUser(String token)
|
|
|
+ /*public void delLoginUser(String token)
|
|
|
{
|
|
|
if (StringUtils.isNotEmpty(token))
|
|
|
{
|
|
|
String userKey = getTokenKey(token);
|
|
|
redisCache.deleteObject(userKey);
|
|
|
}
|
|
|
+ }*/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除用户身份信息
|
|
|
+ */
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getUserIdKey(Long userId)
|
|
|
+ {
|
|
|
+ return Constants.LOGIN_USERID_KEY + userId;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 创建令牌
|
|
|
*
|
|
@@ -140,6 +168,22 @@ public class TokenService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 刷新令牌有效期
|
|
|
+ *
|
|
|
+ * @param loginUser 登录信息
|
|
|
+ */
|
|
|
+ /*public void refreshToken(LoginUser loginUser)
|
|
|
+ {
|
|
|
+ loginUser.setLoginTime(System.currentTimeMillis());
|
|
|
+ loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
|
|
|
+ // 根据uuid将loginUser缓存
|
|
|
+ String userKey = getTokenKey(loginUser.getToken());
|
|
|
+ redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
|
|
|
+ }*/
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 刷新令牌有效期
|
|
|
*
|
|
@@ -152,6 +196,12 @@ public class TokenService
|
|
|
// 根据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);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|