From 3d6a5562ed42b399f4a90e275c394189ec448776 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 26 Oct 2022 14:32:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BC=80=E5=90=AFcas=E5=90=8E=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E9=93=BE=E6=8E=A5=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/auth/config/cas/CasStrategy.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/io/dataease/auth/config/cas/CasStrategy.java b/backend/src/main/java/io/dataease/auth/config/cas/CasStrategy.java index 7a8693b428..82d5187a82 100644 --- a/backend/src/main/java/io/dataease/auth/config/cas/CasStrategy.java +++ b/backend/src/main/java/io/dataease/auth/config/cas/CasStrategy.java @@ -2,6 +2,7 @@ package io.dataease.auth.config.cas; import io.dataease.auth.service.impl.ShiroServiceImpl; import io.dataease.commons.utils.CommonBeanFactory; +import io.dataease.commons.utils.ServletUtils; import io.dataease.service.system.SystemParameterService; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.util.AntPathMatcher; @@ -17,7 +18,7 @@ import java.util.Set; public class CasStrategy implements UrlPatternMatcherStrategy { - private static Set releaseTypes = new HashSet<>(); + private static Set releaseTypes = new HashSet<>(); @PostConstruct public void init() { @@ -25,6 +26,7 @@ public class CasStrategy implements UrlPatternMatcherStrategy { releaseTypes.add("link"); releaseTypes.add("doc"); } + @Override public boolean matches(String s) { SystemParameterService service = CommonBeanFactory.getBean(SystemParameterService.class); @@ -35,10 +37,14 @@ public class CasStrategy implements UrlPatternMatcherStrategy { if ((beginIndex = s.indexOf(serverName)) != -1) { s = s.substring(beginIndex + serverName.length()); } - if (StringUtils.equals("/", s)) return false; + if (StringUtils.equals("/", s)) { + if (fromLink(serverName)) return true; + return false; + } if (StringUtils.equals("/login", s)) return false; if (StringUtils.startsWith(s, "/cas/callBack")) return false; if (StringUtils.equals("/api/auth/deLogout", s)) return true; + if (s.startsWith("/link.html")) return true; AntPathMatcher antPathMatcher = new AntPathMatcher(); ShiroServiceImpl shiroService = CommonBeanFactory.getBean(ShiroServiceImpl.class); Map stringStringMap = shiroService.loadFilterChainDefinitionMap(); @@ -57,4 +63,15 @@ public class CasStrategy implements UrlPatternMatcherStrategy { public void setPattern(String s) { } + + private Boolean fromLink(String serverName) { + String referrer = ServletUtils.request().getHeader("referer"); + if (StringUtils.isBlank(referrer)) return false; + int beginIndex = -1; + if ((beginIndex = referrer.indexOf(serverName)) != -1) { + referrer = referrer.substring(beginIndex + serverName.length()); + return referrer.startsWith("/link.html"); + } + return false; + } }