两套单点登录+两套系统待办跳转bug修复4

This commit is contained in:
wenlukang1 2025-07-03 17:40:22 +08:00
parent 308edcc188
commit 5305ef9c68
1 changed files with 22 additions and 30 deletions

View File

@ -56,25 +56,14 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
logger.info(String.format("eoss_ip:%s,client_id:%s,client_secret:%s,重定向地址:%s", ip, client, secret, s)); logger.info(String.format("eoss_ip:%s,client_id:%s,client_secret:%s,重定向地址:%s", ip, client, secret, s));
String queryUrlNew = Base64.getEncoder().encodeToString(queryUrlOld.getBytes(StandardCharsets.UTF_8)); String queryUrlNew = Base64.getEncoder().encodeToString(queryUrlOld.getBytes(StandardCharsets.UTF_8));
String redirect = skIP + "/index.html?param=" + queryUrlNew; String redirect = skIP + "/index.html?param=" + queryUrlNew;
logger.info(String.format("callTrdSSOLogin→redirect%s", queryUrlOld)); logger.info(String.format("callTrdSSOLogin→redirect%s", redirect));
if(queryUrlOld.contains("code")){ if (queryUrlOld.contains("code")) {
return; return;
} }
String ssourl; String ssoUrl;
try { try {
logger.info(String.format("callTrdSSOLogin→true/false%s", queryUrlOld.contains("wf_approvalpage"))); logger.info(String.format("callTrdSSOLogin→true/false%s", queryUrlOld.contains("wf_approvalpage")));
//非待办登录到首页
if (queryUrlOld.contains("wf_approvalpage")) {
//待办跳转相关逻辑处理
logger.info("callTrdSSOLogin→skip" + redirect);
//重定向的统一认证的地址 获取授权码
ssourl = String.format("%s/sso2/authCenter/authorize?client_id=%s&response_type=code&sessionKeep=true&authType=0&redirect_uri=%s",
ip, client, redirect);
} else {
//重定向到eoss统一认证的地址 获取授权码code
ssourl = String.format("%s/sso2/authCenter/authorize?client_id=%s&response_type=code&sessionKeep=true&authType=0&redirect_uri=%s",
ip, client, redirect);
//退出系统 //退出系统
if (httpServletRequest.getRequestURI().contains("/auth/logout.do")) { if (httpServletRequest.getRequestURI().contains("/auth/logout.do")) {
String userName = UserServiceHelper.getCurrentUser("name").getString("name"); String userName = UserServiceHelper.getCurrentUser("name").getString("name");
@ -85,11 +74,14 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
AuthService.logout(ip, sessionId); AuthService.logout(ip, sessionId);
} }
//退出系统跳转到eoss登录页 //退出系统跳转到eoss登录页
ssourl = ip + "/service/SGE-project-sctz-master/pc/dist/login.html"; ssoUrl = ip + "/service/SGE-project-sctz-master/pc/dist/login.html";
} else {
//重定向到eoss统一认证的地址 获取授权码code
ssoUrl = String.format("%s/sso2/authCenter/authorize?client_id=%s&response_type=code&sessionKeep=true&authType=0&redirect_uri=%s",
ip, client, redirect);
} }
} logger.info(String.format("callTrdSSOLogin→→sendRedirect%s", ssoUrl));
logger.info(String.format("callTrdSSOLogin→→sendRedirect%s", ssourl)); httpServletResponse.sendRedirect(ssoUrl);
httpServletResponse.sendRedirect(ssourl);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -127,19 +119,19 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
String sessionId = httpServletRequest.getParameter("sessionId"); String sessionId = httpServletRequest.getParameter("sessionId");
logger.info(String.format("getTrdSSOAuth→sessionId%s", sessionId)); logger.info(String.format("getTrdSSOAuth→sessionId%s", sessionId));
//解码 //解码
if(StringUtils.isNotEmpty(param) ){ if (StringUtils.isNotEmpty(param)) {
byte[] decodedBytes = Base64.getDecoder().decode(param); byte[] decodedBytes = Base64.getDecoder().decode(param);
String paramString = new String(decodedBytes, StandardCharsets.UTF_8); String paramString = new String(decodedBytes, StandardCharsets.UTF_8);
//二次重定向到待办页面并且修改EOSS返回的sessionId的key值 //二次重定向到待办页面并且修改EOSS返回的sessionId的key值
try { try {
httpServletResponse.sendRedirect(httpServletRequest.getRequestURI() + "?" + paramString + "&code=" + code+"&eossSessionId="+sessionId); httpServletResponse.sendRedirect(httpServletRequest.getRequestURI() + "?" + paramString + "&code=" + code + "&eossSessionId=" + sessionId);
} catch (IOException e) { } catch (IOException e) {
logger.info(String.format("getTrdSSOAuth→sendRedirect异常%s", httpServletRequest.getRequestURI() + "?" + paramString + "&code=" + code+"&eossSessionId="+sessionId)); logger.info(String.format("getTrdSSOAuth→sendRedirect异常%s", httpServletRequest.getRequestURI() + "?" + paramString + "&code=" + code + "&eossSessionId=" + sessionId));
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
//二次重定向进入 //二次重定向进入
if (StringUtils.isNotEmpty(code) && StringUtils.isEmpty(sessionId) ) { if (StringUtils.isNotEmpty(code) && StringUtils.isEmpty(sessionId)) {
//调用EOSS获取token接口 //调用EOSS获取token接口
String access_token = AuthService.accessToken(code, ip, client, secret); String access_token = AuthService.accessToken(code, ip, client, secret);
logger.info(String.format("getTrdSSOAuth→accessToken返回数据%s", access_token)); logger.info(String.format("getTrdSSOAuth→accessToken返回数据%s", access_token));
@ -155,7 +147,7 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
result.setUser(user); result.setUser(user);
result.setSucess(true); result.setSucess(true);
logger.info("SSO用户登录成功进入苍穹系统"); logger.info("SSO用户登录成功进入苍穹系统");
}else{ } else {
result.setSucess(false); result.setSucess(false);
} }
return result; return result;