From 3e03f3d957c44ff2e4909b9fb4fff8621d466d10 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期五, 06 六月 2025 17:05:23 +0800 Subject: [PATCH] 分页修改 --- src/main/java/com/ruoyi/framework/security/service/SysLoginService.java | 95 ++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 93 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java b/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java index 3ecb09b..c2174ca 100644 --- a/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java +++ b/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java @@ -1,11 +1,14 @@ package com.ruoyi.framework.security.service; import javax.annotation.Resource; + +import com.ruoyi.framework.web.domain.AjaxResult; 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.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.Constants; @@ -28,6 +31,10 @@ import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.service.ISysConfigService; import com.ruoyi.project.system.service.ISysUserService; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; /** * 鐧诲綍鏍¢獙鏂规硶 @@ -64,7 +71,7 @@ public String login(String username, String password, String code, String uuid) { // 楠岃瘉鐮佹牎楠� - validateCaptcha(username, code, uuid); +// validateCaptcha(username, code, uuid); // 鐧诲綍鍓嶇疆鏍¢獙 loginPreCheck(username, password); // 鐢ㄦ埛楠岃瘉 @@ -115,12 +122,12 @@ { String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, ""); String captcha = redisCache.getCacheObject(verifyKey); - redisCache.deleteObject(verifyKey); if (captcha == null) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"))); throw new CaptchaExpireException(); } + redisCache.deleteObject(verifyKey); if (!code.equalsIgnoreCase(captcha)) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"))); @@ -178,4 +185,88 @@ sysUser.setLoginDate(DateUtils.getNowDate()); userService.updateUserProfile(sysUser); } + + public Long loginCheck(String username, String password){ + loginPreCheck(username, password); + // 鐢ㄦ埛楠岃瘉 + Authentication authentication = null; + try + { + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + AuthenticationContextHolder.setContext(authenticationToken); + // 璇ユ柟娉曚細鍘昏皟鐢║serDetailsServiceImpl.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(); + } + LoginUser loginUser = (LoginUser) authentication.getPrincipal(); + return loginUser.getUserId(); + } + + /** + * 鐧诲綍楠岃瘉 + * + * @param username 鐢ㄦ埛鍚� + * @param password 瀵嗙爜 + * @param factoryId 鍏徃ID + * @return 缁撴灉 + */ + public String loginCheckFactory(String username, String password, Long factoryId) + { + // 鐧诲綍鍓嶇疆鏍¢獙 + loginPreCheck(username, password); + // 鐢ㄦ埛楠岃瘉 + Authentication authentication = null; + try + { + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + // 鎵╁睍缁嗚妭锛氬皢 companyId 鏀惧叆 details锛堝彲閫夋柟寮忥級 + // 浣跨敤 Map 瀛樺偍棰濆淇℃伅 + Map<String, Object> details = new HashMap<>(); + details.put("factoryId", factoryId); + authenticationToken.setDetails(details); + SecurityContextHolder.getContext().setAuthentication(authenticationToken); + AuthenticationContextHolder.setContext(authenticationToken); + // 璇ユ柟娉曚細鍘昏皟鐢║serDetailsServiceImpl.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"))); + LoginUser loginUser = (LoginUser) authentication.getPrincipal(); + recordLoginInfo(loginUser.getUserId()); + // 鐢熸垚token + return tokenService.createToken(loginUser); + } + } -- Gitblit v1.9.3