From bedff910eb2394a8ce68762a8f3a413d81187ac1 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 10 七月 2026 09:17:34 +0800
Subject: [PATCH] 后台
---
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index ddab783..980ebe7 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -60,6 +60,18 @@
@Autowired
private TAppUserService appUserService;
+ public LoginUser loginByTrustedUsername(String username, String loginSource, String middlePlatformToken)
+ {
+ loginUsernamePreCheck(username);
+ SysUser user = validateLocalUser(username);
+ LoginUser loginUser = new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));
+ loginUser.setLoginSource(loginSource);
+ loginUser.setMiddlePlatformToken(middlePlatformToken);
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+ recordLoginInfo(loginUser.getUserId());
+ return loginUser;
+ }
+
/**
* 登录验证
*
@@ -74,6 +86,11 @@
// 验证码校验
validateCaptcha(username, code, uuid);
// 登录前置校验
+ return loginWithoutCaptcha(username, password);
+ }
+
+ public LoginUser loginWithoutCaptcha(String username, String password)
+ {
loginPreCheck(username, password);
// 用户验证
Authentication authentication = null;
@@ -233,6 +250,43 @@
* @param uuid 唯一标识
* @return 结果
*/
+ private void loginUsernamePreCheck(String username)
+ {
+ if (StringUtils.isEmpty(username))
+ {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
+ throw new UserNotExistsException();
+ }
+ if (username.length() < UserConstants.USERNAME_MIN_LENGTH
+ || username.length() > UserConstants.USERNAME_MAX_LENGTH)
+ {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+ throw new UserPasswordNotMatchException();
+ }
+ String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
+ if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
+ {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
+ throw new BlackListException();
+ }
+ }
+
+ private SysUser validateLocalUser(String username)
+ {
+ SysUser user = userService.selectUserByUserName(username);
+ if (StringUtils.isNull(user)){
+ log.info("登录用户:{} 不存在.", username);
+ throw new ServiceException(MessageUtils.message("user.not.exists"));
+ } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
+ log.info("登录用户:{} 已被删除.", username);
+ throw new ServiceException(MessageUtils.message("user.password.delete"));
+ } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
+ log.info("登录用户:{} 已被停用.", username);
+ throw new ServiceException(MessageUtils.message("user.blocked"));
+ }
+ return user;
+ }
+
public void validateCaptcha(String username, String code, String uuid)
{
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");
--
Gitblit v1.7.1