Commit 236d9536926c0d370a60efc6c3688212ed67654e

Authored by YunaiV
1 parent 3e6ab437

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

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; @@ -23,6 +23,7 @@ import org.springframework.http.HttpMethod;
23 import org.springframework.web.method.HandlerMethod; 23 import org.springframework.web.method.HandlerMethod;
24 import org.springframework.web.servlet.HandlerExecutionChain; 24 import org.springframework.web.servlet.HandlerExecutionChain;
25 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; 25 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
  26 +import org.springframework.web.util.ServletRequestPathUtils;
26 27
27 import java.io.IOException; 28 import java.io.IOException;
28 29
@@ -131,6 +132,12 @@ public class ApiEncryptFilter extends ApiRequestFilter { @@ -131,6 +132,12 @@ public class ApiEncryptFilter extends ApiRequestFilter {
131 @SuppressWarnings("PatternVariableCanBeUsed") 132 @SuppressWarnings("PatternVariableCanBeUsed")
132 private ApiEncrypt getApiEncrypt(HttpServletRequest request) { 133 private ApiEncrypt getApiEncrypt(HttpServletRequest request) {
133 try { 134 try {
  135 + // 特殊:兼容 SpringBoot 2.X 版本会报错的问题 https://t.zsxq.com/kqyiB
  136 + if (!ServletRequestPathUtils.hasParsedRequestPath(request)) {
  137 + ServletRequestPathUtils.parseAndCache(request);
  138 + }
  139 +
  140 + // 解析 @ApiEncrypt 注解
134 HandlerExecutionChain mappingHandler = requestMappingHandlerMapping.getHandler(request); 141 HandlerExecutionChain mappingHandler = requestMappingHandlerMapping.getHandler(request);
135 if (mappingHandler == null) { 142 if (mappingHandler == null) {
136 return null; 143 return null;