liusuyi
2025-10-17 c47e44f99b4c5bcc40868f0d4feb5c7de928ad55
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;
    }
}