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

This commit is contained in:
wenlukang1 2025-07-04 09:29:33 +08:00
parent 5305ef9c68
commit 2de9dc5c09
1 changed files with 23 additions and 12 deletions

View File

@ -41,7 +41,6 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
String ip; String ip;
String client; String client;
String secret; String secret;
String queryUrlOld = httpServletRequest.getQueryString(); String queryUrlOld = httpServletRequest.getQueryString();
if (queryUrlOld.contains("isNew")) { if (queryUrlOld.contains("isNew")) {
ip = EOSS_IP2; ip = EOSS_IP2;
@ -56,6 +55,8 @@ 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;
// String redirect = "http://127.0.0.1:8881/ierp" + "/index.html?param=" + queryUrlNew;
logger.info(String.format("callTrdSSOLogin→redirect%s", redirect)); logger.info(String.format("callTrdSSOLogin→redirect%s", redirect));
if (queryUrlOld.contains("code")) { if (queryUrlOld.contains("code")) {
return; return;
@ -96,7 +97,9 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
String ip; String ip;
String client; String client;
String secret; String secret;
if (httpServletRequest.getQueryString().contains("isNew")) { String queryUrlOld = httpServletRequest.getQueryString();
logger.info(String.format("getTrdSSOAuth→queryUrlOld%s", queryUrlOld));
if (queryUrlOld.contains("isNew")) {
ip = EOSS_IP2; ip = EOSS_IP2;
client = CLIENT_ID2; client = CLIENT_ID2;
secret = CLIENT_SECRET2; secret = CLIENT_SECRET2;
@ -117,18 +120,26 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
String param = httpServletRequest.getParameter("param"); String param = httpServletRequest.getParameter("param");
//获取返回的 sessionId //获取返回的 sessionId
String sessionId = httpServletRequest.getParameter("sessionId"); String sessionId = httpServletRequest.getParameter("sessionId");
String requestURI = httpServletRequest.getRequestURI();
logger.info(String.format("getTrdSSOAuth→sessionId%s", sessionId)); logger.info(String.format("getTrdSSOAuth→sessionId%s", sessionId));
//解码
if (StringUtils.isNotEmpty(param)) {
byte[] decodedBytes = Base64.getDecoder().decode(param);
String paramString = new String(decodedBytes, StandardCharsets.UTF_8);
//二次重定向到待办页面并且修改EOSS返回的sessionId的key值
try { try {
httpServletResponse.sendRedirect(httpServletRequest.getRequestURI() + "?" + paramString + "&code=" + code + "&eossSessionId=" + sessionId); //如果直接携带了code与session并且未通过加密成param需要去除session参数并将其key替换为eossSessionId即可
} catch (IOException e) { if (StringUtils.isNotEmpty(code) && StringUtils.isNotEmpty(sessionId) && StringUtils.isEmpty(param)){
logger.info(String.format("getTrdSSOAuth→sendRedirect异常%s", httpServletRequest.getRequestURI() + "?" + paramString + "&code=" + code + "&eossSessionId=" + sessionId)); String replace = queryUrlOld.replace("sessionId", "eossSessionId");
throw new RuntimeException(e); httpServletResponse.sendRedirect(requestURI+"?"+replace);
logger.info(String.format("getTrdSSOAuth→sendRedirect%s", replace));
} }
//携带了code并且加密成param解密param并重定向进入司库
else if (StringUtils.isNotEmpty(param)) {
//解码
byte[] decodedBytes = Base64.getDecoder().decode(param);
String queryUrlNew = new String(decodedBytes, StandardCharsets.UTF_8);
httpServletResponse.sendRedirect(requestURI + "?" + queryUrlNew + "&code=" + code + "&eossSessionId=" + sessionId);
logger.info(String.format("getTrdSSOAuth→sendRedirect%s", requestURI + "?" + queryUrlNew + "&code=" + code + "&eossSessionId=" + sessionId));
}
} catch (IOException e) {
logger.info(String.format("getTrdSSOAuth→sendRedirect异常%s", e));
throw new RuntimeException(e);
} }
//二次重定向进入 //二次重定向进入
if (StringUtils.isNotEmpty(code) && StringUtils.isEmpty(sessionId)) { if (StringUtils.isNotEmpty(code) && StringUtils.isEmpty(sessionId)) {