From c328460908b8e1278e747db05b8a9a6e12befbca Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Thu, 7 Sep 2023 22:45:08 +0800 Subject: [PATCH] =?UTF-8?q?auth=20=E6=94=AF=E6=8C=81=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E6=96=87=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lihongjie/coal/filter/AuthFilter.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java b/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java index 7e7ca809..e539622d 100644 --- a/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java +++ b/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java @@ -18,6 +18,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; import org.springframework.http.server.PathContainer; import org.springframework.stereotype.Component; @@ -48,6 +49,10 @@ public class AuthFilter extends OncePerRequestFilter { @Autowired PlatformTransactionManager transactionManager; + + @Value("${server.servlet.context-path}") + private String contextPath; + @Override public void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { @@ -73,7 +78,7 @@ public class AuthFilter extends OncePerRequestFilter { String sessionId = request.getHeader("X-Token"); - Optional resource = resourceService.findByCode(request.getRequestURI()); + Optional resource = resourceService.findByCode(getRequestURI(request)); if (resource.isEmpty()) { @@ -150,7 +155,7 @@ public class AuthFilter extends OncePerRequestFilter { boolean matches = false; for (String url : systemConfig.getAnonymous().getUrl()) { - matches = PathPatternParser.defaultInstance.parse(url).matches(PathContainer.parsePath(request.getRequestURI())); + matches = PathPatternParser.defaultInstance.parse(url).matches(PathContainer.parsePath(getRequestURI(request))); if (matches) { break; } @@ -158,6 +163,17 @@ public class AuthFilter extends OncePerRequestFilter { return matches; } + private String getRequestURI(HttpServletRequest request) { + if (StringUtils.equalsIgnoreCase(contextPath, "/")) { + + return request.getRequestURI(); + }else { + + return request.getRequestURI().replace(contextPath, "/"); + + } + } + @Autowired ObjectMapper objectMapper;