登录票据缓存结构调整

v1.4.1
Parker 5 years ago
parent f9942d59d8
commit 9048f216a6

@ -99,7 +99,7 @@ public class UserTokenUtil {
// 如果当前登录开启 数量限制 // 如果当前登录开启 数量限制
if(LOGIN_PROPERTIES.getLimitCount() > ACCOUNT_LIMIT_INFINITE){ if(LOGIN_PROPERTIES.getLimitCount() > ACCOUNT_LIMIT_INFINITE){
// 当前用户已存在 Token数量 // 当前用户已存在 Token数量
Long ticketLen = redisPlugin.sSize(TICKET_PREFIX + ":" + user.getUsername()); Long ticketLen = redisPlugin.sSize(TICKET_PREFIX + user.getUsername());
if(ticketLen !=null && ticketLen >= LOGIN_PROPERTIES.getLimitCount()){ if(ticketLen !=null && ticketLen >= LOGIN_PROPERTIES.getLimitCount()){
// 如果是拒绝后者 则直接抛出异常 // 如果是拒绝后者 则直接抛出异常
if(LoginLimitRefuse.AFTER == LOGIN_PROPERTIES.getLimitRefuse()){ if(LoginLimitRefuse.AFTER == LOGIN_PROPERTIES.getLimitRefuse()){
@ -108,7 +108,7 @@ public class UserTokenUtil {
} }
// 如果是拒绝前者 则弹出前者 // 如果是拒绝前者 则弹出前者
else { else {
redisPlugin.sPop(TICKET_PREFIX + ":" + user.getUsername()); redisPlugin.sPop(TICKET_PREFIX + user.getUsername());
} }
} }
} }
@ -132,10 +132,10 @@ public class UserTokenUtil {
// 在redis存一份 token 是为了防止 人为造假 // 在redis存一份 token 是为了防止 人为造假
// 保存用户token // 保存用户token
Long saveLong = redisPlugin.sPut(TICKET_PREFIX + ":" + user.getUsername(), signToken); Long saveLong = redisPlugin.sPut(TICKET_PREFIX + user.getUsername(), signToken);
if(saveLong != null && saveLong > 0){ if(saveLong != null && saveLong > 0){
// 设置该用户全部token失效时间 如果这时又有新设备登录 则续命 // 设置该用户全部token失效时间 如果这时又有新设备登录 则续命
redisPlugin.expire(TICKET_PREFIX + ":" + user.getUsername(), expire); redisPlugin.expire(TICKET_PREFIX + user.getUsername(), expire);
TokenRet tokenRet = new TokenRet(); TokenRet tokenRet = new TokenRet();
tokenRet.setToken(signToken); tokenRet.setToken(signToken);
@ -144,6 +144,8 @@ public class UserTokenUtil {
return ResultVo.success(tokenRet); return ResultVo.success(tokenRet);
} }
}catch (TokenException te){
throw te;
}catch (Exception e){ }catch (Exception e){
log.error(e.getMessage() , e); log.error(e.getMessage() , e);
} }
@ -199,10 +201,10 @@ public class UserTokenUtil {
UserModel user = UserUtil.getUser(userId); UserModel user = UserUtil.getUser(userId);
if(user != null){ if(user != null){
// 删除Token信息 // 删除Token信息
redisPlugin.sRemove(TICKET_PREFIX + ":" + user.getUsername(), token); redisPlugin.sRemove(TICKET_PREFIX + user.getUsername(), token);
// 如果缓存中 无该用户任何Token信息 则删除用户缓存 // 如果缓存中 无该用户任何Token信息 则删除用户缓存
Long size = redisPlugin.sSize(TICKET_PREFIX + ":" + user.getUsername()); Long size = redisPlugin.sSize(TICKET_PREFIX + user.getUsername());
if(size == null || size == 0L){ if(size == null || size == 0L){
// 删除相关信息 // 删除相关信息
UserUtil.refreshUser(user); UserUtil.refreshUser(user);
@ -235,7 +237,7 @@ public class UserTokenUtil {
// 生成MD5 16进制码 用于缩减存储 // 生成MD5 16进制码 用于缩减存储
// 删除相关信息 // 删除相关信息
String username = getUserNameByToken(token); String username = getUserNameByToken(token);
boolean hashKey = redisPlugin.sHashKey(TICKET_PREFIX + ":" + username, token); boolean hashKey = redisPlugin.sHashKey(TICKET_PREFIX + username, token);
if(!hashKey){ if(!hashKey){
return false; return false;
} }

Loading…
Cancel
Save