zhaowenyu
2025-12-17 fee6cbe63d4dc2df256e2a6977331e26d84588de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.ard.framework.security.handle;
 
import com.ard.common.constant.CacheConstants;
import com.ard.common.constant.Constants;
import com.ard.common.core.redis.RedisCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
@Component
public class CustomAuthenticationSuccessHandler {
 
    @Value("${token.soloLogin}")
    private boolean soloLogin;
 
    @Autowired
    private RedisCache redisCache;
 
    public void onAuthenticationSuccess(Long userId) {
        // 允许多端登录,直接放行
        if (soloLogin) {
            return;
        }
        // 检查 Redis 中是否已有该用户登录
        String key = CacheConstants.LOGIN_USERID_KEY + userId;
        if (redisCache.hasKey(key)) {
            throw new RuntimeException("用户已登录,请勿重复登录");
        }
    }
}