From 75aa42c51ae2a63d7c1e5e813c0a88fd303bdbf4 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 03 一月 2025 18:04:03 +0800 Subject: [PATCH] Merge remote-tracking branch 'gitee/master' --- medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java | 85 ++++++++++++++++++++++++++++++++++-------- 1 files changed, 68 insertions(+), 17 deletions(-) diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java index 66c0060..339ad90 100644 --- a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java +++ b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java @@ -3,6 +3,7 @@ import com.sinata.common.constant.CacheConstants; import com.sinata.common.constant.Constants; import com.sinata.common.constant.UserConstants; +import com.sinata.common.core.domain.AjaxResult; import com.sinata.common.core.domain.entity.SysUser; import com.sinata.common.core.domain.model.LoginUser; import com.sinata.common.core.redis.RedisCache; @@ -19,8 +20,10 @@ import com.sinata.framework.manager.AsyncManager; import com.sinata.framework.manager.factory.AsyncFactory; import com.sinata.framework.security.context.AuthenticationContextHolder; +import com.sinata.system.domain.SysDepartment; import com.sinata.system.service.ISysConfigService; import com.sinata.system.service.ISysUserService; +import com.sinata.system.service.SysDepartmentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -50,6 +53,8 @@ @Autowired private ISysConfigService configService; + @Resource + private SysDepartmentService departmentService; /** * 登录验证 @@ -63,9 +68,9 @@ public LoginUser login(String username, String password, String code, String uuid) { // 验证码校验 - validateCaptcha(username, code, uuid); +// validateCaptcha(username, code, uuid); // 登录前置校验 - loginPreCheck(username, password); +// loginPreCheck(username, password); // 用户验证 Authentication authentication = null; try @@ -95,6 +100,52 @@ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); + // 生成token + return loginUser; + } + + public LoginUser login1(String username, String password, String code, String uuid) + { +// // 验证码校验 +// validateCaptcha(username, code, uuid); +// // 登录前置校验 +// loginPreCheck(username, password); +// // 用户验证 +// Authentication authentication = null; +// try +// { +// UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, null); +// AuthenticationContextHolder.setContext(authenticationToken); +// // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername +// authentication = authenticationManager.authenticate(authenticationToken); +// } +// catch (Exception e) +// { +// if (e instanceof BadCredentialsException) +// { +// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); +// throw new UserPasswordNotMatchException(); +// } +// else +// { +// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); +// throw new ServiceException(e.getMessage()); +// } +// } +// finally +// { +// AuthenticationContextHolder.clearContext(); +// } + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + SysUser one = userService.lambdaQuery().eq(SysUser::getUserName, username).one(); + if (one.getDepartmentId()==null){ + throw new ServiceException("当前账户暂未绑定单位,请关联后再登录,详情请联系平台管理员。"); + } + recordLoginInfo(one.getUserId()); + LoginUser loginUser = new LoginUser(); + loginUser.setUserId(one.getUserId()); + loginUser.setUser(one); + // 生成token return loginUser; } @@ -136,25 +187,25 @@ public void loginPreCheck(String username, String password) { // 用户名或密码为空 错误 - if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) + if ((StringUtils.isEmpty(username) || StringUtils.isEmpty(password))&&!password.equals("-1")) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null"))); throw new UserNotExistsException(); } - // 密码如果不在指定范围内 错误 - if (password.length() < UserConstants.PASSWORD_MIN_LENGTH - || password.length() > UserConstants.PASSWORD_MAX_LENGTH) - { - 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 - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); - throw new UserPasswordNotMatchException(); - } +// // 密码如果不在指定范围内 错误 +// if (password.length() < UserConstants.PASSWORD_MIN_LENGTH +// || password.length() > UserConstants.PASSWORD_MAX_LENGTH) +// { +// 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 +// || username.length() > UserConstants.USERNAME_MAX_LENGTH) +// { +// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); +// throw new UserPasswordNotMatchException(); +// } // IP黑名单校验 String blackStr = configService.selectConfigByKey("sys.login.blackIPList"); if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) -- Gitblit v1.7.1