Преглед изворни кода

fix:【framework 框架】兼容 SpringBoot 2.X 版本的 API 加解密

YunaiV пре 10 месеци
родитељ
комит
236d953692

+ 7 - 0
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/encrypt/core/filter/ApiEncryptFilter.java

@@ -23,6 +23,7 @@ import org.springframework.http.HttpMethod;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerExecutionChain;
 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
+import org.springframework.web.util.ServletRequestPathUtils;
 
 import java.io.IOException;
 
@@ -131,6 +132,12 @@ public class ApiEncryptFilter extends ApiRequestFilter {
     @SuppressWarnings("PatternVariableCanBeUsed")
     private ApiEncrypt getApiEncrypt(HttpServletRequest request) {
         try {
+            // 特殊:兼容 SpringBoot 2.X 版本会报错的问题 https://t.zsxq.com/kqyiB
+            if (!ServletRequestPathUtils.hasParsedRequestPath(request)) {
+                ServletRequestPathUtils.parseAndCache(request);
+            }
+
+            // 解析 @ApiEncrypt 注解
             HandlerExecutionChain mappingHandler = requestMappingHandlerMapping.getHandler(request);
             if (mappingHandler == null) {
                 return null;