auth 支持上下文路径

This commit is contained in:
2023-09-07 22:45:08 +08:00
parent 8ead8f57a4
commit c328460908

View File

@@ -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<ResourceEntity> resource = resourceService.findByCode(request.getRequestURI());
Optional<ResourceEntity> 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;