From 5305ef9c683a1dda5fc14f3728baf067fd056ccd Mon Sep 17 00:00:00 2001 From: wenlukang1 Date: Thu, 3 Jul 2025 17:40:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=A4=E5=A5=97=E5=8D=95=E7=82=B9=E7=99=BB?= =?UTF-8?q?=E5=BD=95+=E4=B8=A4=E5=A5=97=E7=B3=BB=E7=BB=9F=E5=BE=85?= =?UTF-8?q?=E5=8A=9E=E8=B7=B3=E8=BD=ACbug=E4=BF=AE=E5=A4=8D4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shkd/sys/sys/eoss/SSOPluginLogin.java | 52 ++++++++----------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java index eb58168..f1be003 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java @@ -56,40 +56,32 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler { 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 redirect = skIP + "/index.html?param=" + queryUrlNew; - logger.info(String.format("callTrdSSOLogin→redirect:%s", queryUrlOld)); - if(queryUrlOld.contains("code")){ + logger.info(String.format("callTrdSSOLogin→redirect:%s", redirect)); + if (queryUrlOld.contains("code")) { return; } - String ssourl; + String ssoUrl; try { 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); + //退出系统 + if (httpServletRequest.getRequestURI().contains("/auth/logout.do")) { + String userName = UserServiceHelper.getCurrentUser("name").getString("name"); + DistributeSessionlessCache cache = CacheFactory.getCommonCacheFactory().getDistributeSessionlessCache("customRegion"); + String userKey = "user_sessionId_" + userName; // 构造存储sessionId的键 + String sessionId = cache.get(userKey); + if (sessionId != null) { + AuthService.logout(ip, sessionId); + } + //退出系统跳转到eoss登录页 + 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", + 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")) { - String userName = UserServiceHelper.getCurrentUser("name").getString("name"); - DistributeSessionlessCache cache = CacheFactory.getCommonCacheFactory().getDistributeSessionlessCache("customRegion"); - String userKey = "user_sessionId_" + userName; // 构造存储sessionId的键 - String sessionId = cache.get(userKey); - if (sessionId != null) { - AuthService.logout(ip, sessionId); - } - //退出系统跳转到eoss登录页 - ssourl = ip + "/service/SGE-project-sctz-master/pc/dist/login.html"; - } } - logger.info(String.format("callTrdSSOLogin→→sendRedirect:%s", ssourl)); - httpServletResponse.sendRedirect(ssourl); + logger.info(String.format("callTrdSSOLogin→→sendRedirect:%s", ssoUrl)); + httpServletResponse.sendRedirect(ssoUrl); } catch (IOException e) { throw new RuntimeException(e); } @@ -127,19 +119,19 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler { String sessionId = httpServletRequest.getParameter("sessionId"); logger.info(String.format("getTrdSSOAuth→sessionId:%s", sessionId)); //解码 - if(StringUtils.isNotEmpty(param) ){ + if (StringUtils.isNotEmpty(param)) { byte[] decodedBytes = Base64.getDecoder().decode(param); String paramString = new String(decodedBytes, StandardCharsets.UTF_8); //二次重定向到待办页面,并且修改EOSS返回的sessionId的key值 try { - httpServletResponse.sendRedirect(httpServletRequest.getRequestURI() + "?" + paramString + "&code=" + code+"&eossSessionId="+sessionId); + httpServletResponse.sendRedirect(httpServletRequest.getRequestURI() + "?" + paramString + "&code=" + code + "&eossSessionId=" + sessionId); } 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); } } //二次重定向进入 - if (StringUtils.isNotEmpty(code) && StringUtils.isEmpty(sessionId) ) { + if (StringUtils.isNotEmpty(code) && StringUtils.isEmpty(sessionId)) { //调用EOSS获取token接口 String access_token = AuthService.accessToken(code, ip, client, secret); logger.info(String.format("getTrdSSOAuth→accessToken返回数据:%s", access_token)); @@ -155,7 +147,7 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler { result.setUser(user); result.setSucess(true); logger.info("SSO用户登录成功,进入苍穹系统"); - }else{ + } else { result.setSucess(false); } return result;