From 23d35c163bd5308fc4a8e94cda87881d9547a251 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期五, 29 八月 2025 13:31:12 +0800 Subject: [PATCH] 去除与其他系统的对接配置 --- ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 94 +++++++++++++++++++++++++++++----------------- 1 files changed, 59 insertions(+), 35 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 05fbbf4..385d707 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 @@ -4,11 +4,9 @@ import javax.net.ssl.SSLContext; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.PropertyNamingStrategy; -import com.alibaba.fastjson.parser.ParserConfig; -import com.ruoyi.common.config.SsoBean; import com.ruoyi.framework.model.SsoOauthTokenModel; import com.ruoyi.framework.model.SsoUserInfoModel; +import com.ruoyi.framework.web.ssoAuth.SsoCodeAuthenticationToken; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; @@ -24,6 +22,7 @@ import org.apache.http.ssl.TrustStrategy; import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -60,6 +59,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; /** * 鐧诲綍鏍¢獙鏂规硶 @@ -80,13 +80,13 @@ private RedisCache redisCache; @Autowired - private ISysUserService userService; + private ISysUserService sysUserService; @Autowired private ISysConfigService configService; @Autowired - private SsoBean ssoBean; + private RedisTemplate redisTemplate; /** * 鐧诲綍楠岃瘉 @@ -99,8 +99,8 @@ */ public String login(String username, String password, String code, String uuid) { - // 楠岃瘉鐮佹牎楠� - validateCaptcha(username, code, uuid); +// // 楠岃瘉鐮佹牎楠� +// validateCaptcha(username, code, uuid); // 鐧诲綍鍓嶇疆鏍¢獙 loginPreCheck(username, password); // 鐢ㄦ埛楠岃瘉 @@ -212,7 +212,7 @@ sysUser.setUserId(userId); sysUser.setLoginIp(IpUtils.getIpAddr()); sysUser.setLoginDate(DateUtils.getNowDate()); - userService.updateUserProfile(sysUser); + sysUserService.updateUserProfile(sysUser); } /** @@ -225,22 +225,66 @@ // 鑾峰彇鍗曠偣鐧诲綍token SsoOauthTokenModel tokenModel = this.getSsoAccessToken(code); if (tokenModel == null) { - return null; + throw new RuntimeException("鍗曠偣鐧诲綍楠岃瘉澶辫触"); } // 鑾峰彇鍗曠偣鐧诲綍鐢ㄦ埛淇℃伅 SsoUserInfoModel userInfo = this.getSsoUserInfo(tokenModel.getAccess_token()); if (userInfo == null) { - return null; + throw new RuntimeException("鍗曠偣鐧诲綍楠岃瘉澶辫触"); } // 鏌ヨ鏈湴鐢ㄦ埛淇℃伅 + LoginUser loginUser = this.getSsoLoginToken(userInfo.getEmployeeId()); + recordLoginInfo(loginUser.getUserId()); - - + // 鍒涘缓鐧诲綍淇℃伅 + AsyncManager.me().execute(AsyncFactory.recordLogininfor(userInfo.getEmployeeId(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.sso.login.success"))); + redisTemplate.opsForValue().set("ssoOauthToken:idToken:" + userInfo.getEmployeeId(), tokenModel.getId_token(), 3, TimeUnit.DAYS); // 鐢熸垚token - return tokenService.createToken(null); + return tokenService.createToken(loginUser); } + + /** + * ***** 鑾峰彇鏈湴鐢ㄦ埛淇℃伅 ***** + * @param username + * @return + */ + public LoginUser getSsoLoginToken(String username) { + // 鐢ㄦ埛楠岃瘉 + Authentication authentication = null; + SysUser sysUser = sysUserService.selectUserByUserName(username); + if (sysUser == null) { + throw new ServiceException("褰撳墠绯荤粺娌℃湁璇ョ敤鎴�"); + } + try + { + // 鏃犻渶瀵嗙爜鑾峰彇鐢ㄦ埛淇℃伅 + authentication = authenticationManager.authenticate(new SsoCodeAuthenticationToken(username)); + } + catch (Exception e) + { + if (e instanceof BadCredentialsException) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.sso.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.sso.login.success"))); + return (LoginUser) authentication.getPrincipal(); + + } + + /** * **** 鑾峰彇鍗曠偣鐧诲綍token **** @@ -248,21 +292,7 @@ * @return */ public SsoOauthTokenModel getSsoAccessToken(String code) { - List<NameValuePair> list = new LinkedList<>(); - list.add(new BasicNameValuePair("grant_type", "authorization_code")); - list.add(new BasicNameValuePair("code", code)); - list.add(new BasicNameValuePair("client_id", ssoBean.getClientId())); - list.add(new BasicNameValuePair("client_secret", ssoBean.getClientSecret())); - list.add(new BasicNameValuePair("redirect_uri", ssoBean.getCallbackUrl())); - - Map<String, String> headers = new HashMap<>(); - headers.put("Content-Type", "application/x-www-form-urlencoded"); - headers.put("Accept", "application/json"); - String result = doPost(ssoBean.getUrl() + "/oauth2/token", headers, list); - if (org.apache.commons.lang3.StringUtils.isBlank(result)) { - return null; - } - return JSON.parseObject(result, SsoOauthTokenModel.class); + return null; } /** @@ -271,13 +301,7 @@ * @return */ public SsoUserInfoModel getSsoUserInfo(String accessToken) { - Map<String, String> headers = new HashMap<>(); - headers.put("Authorization", "Bearer " + accessToken); - String result = doPost(ssoBean.getUrl() + "/userinfo", headers, null); - if (org.apache.commons.lang3.StringUtils.isBlank(result)) { - return null; - } - return JSON.parseObject(result, SsoUserInfoModel.class); + return null; } public static String doPost(String url, Map<String, String> headers, List<NameValuePair> params) { -- Gitblit v1.9.3