From 96d1d7c4fdb58e6b96a2e75b7345f567d0c50e09 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Thu, 15 Dec 2022 23:27:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=90=8E=E9=87=8D=E5=AE=9A?= =?UTF-8?q?=E5=90=91=E5=9C=B0=E5=9D=80=E4=B8=8D=E5=85=81=E8=AE=B8=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E5=88=B0=E5=A4=96=E9=83=A8=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeesite/common/web/http/ServletUtils.java | 40 +++++++++++-------- .../modules/sys/web/LoginController.java | 7 ++++ 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/common/src/main/java/com/jeesite/common/web/http/ServletUtils.java b/common/src/main/java/com/jeesite/common/web/http/ServletUtils.java index 4715f177..31c09d9b 100644 --- a/common/src/main/java/com/jeesite/common/web/http/ServletUtils.java +++ b/common/src/main/java/com/jeesite/common/web/http/ServletUtils.java @@ -4,23 +4,6 @@ */ package com.jeesite.common.web.http; -import java.io.IOException; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; -import java.util.StringTokenizer; -import java.util.TreeMap; - -import javax.servlet.ServletRequest; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.lang3.Validate; -import org.springframework.http.MediaType; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - import com.fasterxml.jackson.databind.util.JSONPObject; import com.jeesite.common.codec.EncodeUtils; import com.jeesite.common.collect.MapUtils; @@ -29,6 +12,17 @@ import com.jeesite.common.lang.ExceptionUtils; import com.jeesite.common.lang.StringUtils; import com.jeesite.common.mapper.JsonMapper; import com.jeesite.common.mapper.XmlMapper; +import org.apache.commons.lang3.Validate; +import org.springframework.http.MediaType; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.*; +import java.util.Map.Entry; /** * Http与Servlet工具类. @@ -387,6 +381,18 @@ public class ServletUtils { return null; } + /** + * 获取请求的域名(含端口) + */ + public static String getRequestDomain(String url) { + String scheme = StringUtils.substringBefore(url, "://"); + String domain = StringUtils.substringAfter(url, "://"); + if (StringUtils.contains(domain, "/")) { + domain = StringUtils.substringBefore(domain, "/"); + } + return scheme + "://" + domain; + } + /** * 获得请求参数值 */ diff --git a/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java b/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java index 5eb7b25f..fd15a3c7 100644 --- a/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java +++ b/modules/core/src/main/java/com/jeesite/modules/sys/web/LoginController.java @@ -217,6 +217,13 @@ public class LoginController extends BaseController{ if (StringUtils.isBlank(successUrl)){ successUrl = (String)request.getAttribute("__url"); } + if (StringUtils.contains(successUrl, "://")){ + String domain = ServletUtils.getRequestDomain(successUrl); + successUrl = StringUtils.substring(successUrl, domain.length()); + if (StringUtils.startsWith(successUrl, request.getContextPath())) { + successUrl = StringUtils.substringAfter(successUrl, request.getContextPath()); + } + } if (StringUtils.isBlank(successUrl)){ successUrl = Global.getProperty("shiro.successUrl"); }