From ffb7bf307d13056bcf244b949cfe2f0ff15e0001 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 12 二月 2025 14:14:19 +0800 Subject: [PATCH] Merge remote-tracking branch 'gitee/master' --- medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java | 106 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 78 insertions(+), 28 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 4178333..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 @@ -1,15 +1,9 @@ package com.sinata.framework.web.service; -import javax.annotation.Resource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.authentication.BadCredentialsException; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.stereotype.Component; 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; @@ -26,8 +20,18 @@ 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; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; /** * 登录校验方法 @@ -37,8 +41,6 @@ @Component public class SysLoginService { - @Autowired - private TokenService tokenService; @Resource private AuthenticationManager authenticationManager; @@ -51,6 +53,8 @@ @Autowired private ISysConfigService configService; + @Resource + private SysDepartmentService departmentService; /** * 登录验证 @@ -61,12 +65,12 @@ * @param uuid 唯一标识 * @return 结果 */ - public String login(String username, String password, String code, String uuid) + 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 @@ -97,7 +101,53 @@ LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); // 生成token - return tokenService.createToken(loginUser); + 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; } /** @@ -137,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