From b7546c8111a006f0b0feaa195a51f51ca61e01fc Mon Sep 17 00:00:00 2001 From: brothelul <1285823170@qq.com> Date: Wed, 27 Jan 2021 11:32:26 +0800 Subject: [PATCH] dashboard: authFilterExcludeUrls supports matching path pattern like /xx/** (#1971) --- .../dashboard/auth/LoginAuthenticationFilter.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/LoginAuthenticationFilter.java b/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/LoginAuthenticationFilter.java index f489b48e..b8aa3945 100644 --- a/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/LoginAuthenticationFilter.java +++ b/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/LoginAuthenticationFilter.java @@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; +import org.springframework.util.AntPathMatcher; import javax.servlet.Filter; import javax.servlet.FilterChain; @@ -29,7 +30,6 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import java.io.IOException; import java.util.List; @@ -51,6 +51,8 @@ import java.util.List; */ @Component public class LoginAuthenticationFilter implements Filter { + + private static final AntPathMatcher PATH_MATCHER = new AntPathMatcher(); private static final String URL_SUFFIX_DOT = "."; @@ -85,7 +87,9 @@ public class LoginAuthenticationFilter implements Filter { String servletPath = httpRequest.getServletPath(); // Exclude the urls which needn't auth - if (authFilterExcludeUrls.contains(servletPath)) { + boolean authFilterExcludeMatch = authFilterExcludeUrls.stream() + .anyMatch(authFilterExcludeUrl -> PATH_MATCHER.match(authFilterExcludeUrl, servletPath)); + if (authFilterExcludeMatch) { chain.doFilter(request, response); return; }