From a2892a66f3f96b93f65f5a219b8e94545929cbc6 Mon Sep 17 00:00:00 2001 From: shuzheng <469741414@qq.com> Date: Sun, 1 Jan 2017 21:33:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A4=E8=AF=81=E4=B8=AD=E5=BF=83=E7=94=9F?= =?UTF-8?q?=E6=88=90token=E5=9B=9E=E8=B7=B3=E5=AD=90=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E9=9A=90=E8=97=8Furl=E4=B8=AD=E7=9A=84token?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zheng/upms/client/filter/SSOFilter.java | 17 +++++++++++++++-- .../upms/admin/controller/SSOController.java | 16 ++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/zheng-upms/zheng-upms-client/src/main/java/com/zheng/upms/client/filter/SSOFilter.java b/zheng-upms/zheng-upms-client/src/main/java/com/zheng/upms/client/filter/SSOFilter.java index ea413b35..7d406fc0 100644 --- a/zheng-upms/zheng-upms-client/src/main/java/com/zheng/upms/client/filter/SSOFilter.java +++ b/zheng-upms/zheng-upms-client/src/main/java/com/zheng/upms/client/filter/SSOFilter.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * Created by shuzheng on 2016/12/10. @@ -82,9 +83,21 @@ public class SSOFilter implements Filter { RedisUtil.getJedis().sadd(token + "_subSessionIds", sessionId); _log.info("当前token={},对应的注册系统有:{}个", token, RedisUtil.getJedis().scard(token + "_subSessionIds")); // 移除url中的token参数 - // TODO + StringBuffer backUrl = request.getRequestURL(); + String params = ""; + Map parameterMap = request.getParameterMap(); + for (Map.Entry entry : parameterMap.entrySet()) { + if (!entry.getKey().equals("token")) { + if (params.equals("")) { + params = entry.getKey() + "=" + entry.getValue()[0]; + } else { + params += "&" + entry.getKey() + "=" + entry.getValue()[0]; + } + } + } + backUrl = backUrl.append("?").append(params); // 返回请求资源 - filterChain.doFilter(request, response); + response.sendRedirect(backUrl.toString()); return; } } diff --git a/zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/SSOController.java b/zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/SSOController.java index 24a3d851..42d6d320 100644 --- a/zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/SSOController.java +++ b/zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/SSOController.java @@ -90,6 +90,22 @@ public class SSOController { public String login(HttpServletRequest request) { String sessionId = CookieUtil.getCookie(request, ZHENG_UPMS_SSO_SERVER_SESSION_ID); _log.info("认证中心sessionId={}", sessionId); + String backurl = request.getParameter("backurl"); + if (!StringUtils.isEmpty(sessionId) && !StringUtils.isEmpty(backurl)) { + String token = RedisUtil.get(sessionId + "_token"); + // token校验值 + if (!StringUtils.isEmpty(token)) { + // 回调子系统 + String redirectUrl = backurl; + if (backurl.contains("?")) { + redirectUrl += "&token=" + token; + } else { + redirectUrl += "?token=" + token; + } + _log.info("认证中心帐号通过,带token回跳:{}", redirectUrl); + return "redirect:" + redirectUrl; + } + } return "/sso/login"; }