From 759e0540a7ca20f33ab265d00e7944e4f18a562b Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期三, 22 一月 2025 23:12:15 +0800 Subject: [PATCH] 1 --- ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java | 19 ++++++++++++++++++- 1 files changed, 18 insertions(+), 1 deletions(-) diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java index e83b91a..6d1e19f 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java @@ -23,12 +23,14 @@ import com.ruoyi.company.api.model.RegisterUser; import com.ruoyi.system.api.RemoteUserService; import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.model.AppUser; import com.ruoyi.system.api.model.LoginUser; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.Collection; import java.util.List; import java.util.Objects; @@ -164,12 +166,13 @@ throw new ServiceException("验证码错误"); } String[] split = captcha.split(":"); - long l = Long.parseLong(split[2]); + long l = Long.parseLong(split[1]); long l1 = System.currentTimeMillis(); // 判断是否大于两分钟 if (l1 - l > 2 * 60 * 1000) { throw new CaptchaException("验证码已失效"); } + captcha = split[0]; if (!smsCode.equalsIgnoreCase(captcha)) { throw new CaptchaException("验证码错误"); } @@ -220,6 +223,20 @@ if (R.isError(r)) { throw new ServiceException(r.getMsg()); } + forceLogout(user.getUserId()); + } + + public void forceLogout(Long userId) { + Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); + for (String key : keys) { + Object user = redisService.getCacheObject(key); + if (user instanceof AppUser) { + AppUser appUser = (AppUser) user; + if (appUser.getUserId().equals(userId)) { + redisService.deleteObject(key); + } + } + } } -- Gitblit v1.7.1