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