正式环境

master
杜函宇 4 months ago
parent 4d312550a2
commit 2463035346

@ -9,9 +9,7 @@ import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.UserStatus; import com.ruoyi.common.enums.UserStatus;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.*;
import com.ruoyi.common.exception.user.CaptchaExpireException;
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.RsaUtils; import com.ruoyi.common.utils.RsaUtils;
@ -84,14 +82,9 @@ public class SysLoginService {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
// 验证码校验 // 验证码校验
validateCaptcha(username, code, uuid); validateCaptcha(username, code, uuid);
// 登录前置校验 // 登录前置校验
loginPreCheck(username, strP); loginPreCheck(username, strP);
Map<String, Object> map = redisCache.getCacheObject(username + strP);
if (CollectionUtil.isNotEmpty(map)) {
map.remove("@type");
return map;
}
// 用户验证 // 用户验证
Authentication authentication; Authentication authentication;
try { try {
@ -110,32 +103,9 @@ public class SysLoginService {
} finally { } finally {
AuthenticationContextHolder.clearContext(); AuthenticationContextHolder.clearContext();
} }
// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal(); LoginUser loginUser = (LoginUser) authentication.getPrincipal();
// recordLoginInfo(loginUser.getUserId()); recordLoginInfo(loginUser.getUserId());
if (StringUtils.isNull(loginUser) || StringUtils.isNull(loginUser.getUserId())) {
// addRecord(username, Constants.LOGIN_FAIL, "登录用户不存在");
throw new ServiceException("登录用户:" + username + " 不存在");
}
loginUser.getUser().setPassword(password);
SysUser user = loginUser.getUser();
// 判断用户类型
if (!"admin".equals(username)) {
if (!userType.equals(user.getUserType())) {
throw new ServiceException("该用户类型错误");
}
}
if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
// addRecord(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
}
if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
// addRecord(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员");
throw new ServiceException("对不起,您的账号:" + username + " 已停用");
}
// sysPasswordService.validate(user);
// 生成token // 生成token
return tokenService.createToken(loginUser); return tokenService.createToken(loginUser);
} }
@ -173,30 +143,32 @@ public class SysLoginService {
*/ */
public void loginPreCheck(String username, String password) { public void loginPreCheck(String username, String password) {
// 用户名或密码为空 错误 // 用户名或密码为空 错误
if (StringUtils.isAnyBlank(username, password)) { if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password))
// this.addRecord(username, Constants.LOGIN_FAIL, "用户/密码必须填写"); {
throw new ServiceException("用户/密码必须填写"); AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
throw new UserNotExistsException();
} }
// 密码如果不在指定范围内 错误 // 密码如果不在指定范围内 错误
if (password.length() < UserConstants.PASSWORD_MIN_LENGTH if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
|| password.length() > UserConstants.PASSWORD_MAX_LENGTH) { || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
// this.addRecord(username, Constants.LOGIN_FAIL, "用户密码不在指定范围"); {
throw new ServiceException("用户密码不在指定范围"); AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
} }
// 用户名不在指定范围内 错误 // 用户名不在指定范围内 错误
if (username.length() < UserConstants.USERNAME_MIN_LENGTH if (username.length() < UserConstants.USERNAME_MIN_LENGTH
|| username.length() > UserConstants.USERNAME_MAX_LENGTH) { || username.length() > UserConstants.USERNAME_MAX_LENGTH)
// this.addRecord(username, Constants.LOGIN_FAIL, "用户名不在指定范围"); {
throw new ServiceException("用户名不在指定范围"); AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
} }
// IP黑名单校验 // IP黑名单校验
// String blackStr = configService.selectConfigByKey("sys.login.blackIPList"); String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
// if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
// { {
// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked"))); AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
// throw new BlackListException(); throw new BlackListException();
// } }
} }
/** /**

Loading…
Cancel
Save