From e4299cc40c0e8609a1665756bb4fe2a4c8eb7aa3 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期四, 25 九月 2025 11:18:18 +0800
Subject: [PATCH] yys 添加配置文件
---
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 93 ++++++++++++++++++++++++++--------------------
1 files changed, 53 insertions(+), 40 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 b6841dd..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,12 +4,9 @@
import javax.net.ssl.SSLContext;
import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.common.config.SsoBean;
-import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.framework.model.SsoOauthTokenModel;
import com.ruoyi.framework.model.SsoUserInfoModel;
-import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.framework.web.ssoAuth.SsoCodeAuthenticationToken;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
@@ -89,13 +86,7 @@
private ISysConfigService configService;
@Autowired
- private SsoBean ssoBean;
-
- @Autowired
private RedisTemplate redisTemplate;
-
- @Autowired
- private UserMapper userMapper;
/**
* 鐧诲綍楠岃瘉
@@ -108,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);
// 鐢ㄦ埛楠岃瘉
@@ -234,24 +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.single.login.success")));
+ // 鍒涘缓鐧诲綍淇℃伅
+ 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 ****
@@ -259,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;
}
/**
@@ -282,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