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("用户已登录,请勿重复登录"); } } }