From 7cf1dfcf9f932a8a98854ac14fc1f6f778146932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Thu, 15 Jan 2026 15:15:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(filter):=20=E4=BF=AE=E5=A4=8DApp-Version?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=BC=BA=E5=A4=B1=E5=AF=BC=E8=87=B4=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=AE=BF=E9=97=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加白名单配置,排除部分遗漏App-Version参数的前端接口 - 对getTicket、uploadSingleFile、getInfoById接口跳过版本校验 - 解决iOS打包重新审核期间的接口兼容性问题 - 保留原有版本校验逻辑,仅对白名单接口进行特殊处理 --- .../starter/filter/AppVersionFilter.java | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/filter/AppVersionFilter.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/filter/AppVersionFilter.java index 4370db3c..9d8ecbd9 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/filter/AppVersionFilter.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/filter/AppVersionFilter.java @@ -18,6 +18,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; +import java.util.Set; @Slf4j @Order(0) @@ -26,28 +27,35 @@ public class AppVersionFilter extends OncePerRequestFilter { private static final ObjectMapper objectMapper = new ObjectMapper(); + /** + * 因前端部分接口遗漏App-Version参数,ios打包重新审核需要很久,所以需要排除掉,否则会导致接口无法访问 + */ + private static final Set WHITE_LIST = Set.of("getTicket", "uploadSingleFile", "getInfoById"); + private static final String MIN_SUPPER_VERSION = "1.0.9"; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException, ServletException { - String appPlatform = request.getHeader("App-Platform"); - response.setStatus(HttpServletResponse.SC_OK); - if (StrUtil.isBlank(appPlatform)) { - log.error("请求头中未找到App-Platform"); - response.setStatus(HttpStatus.UNAUTHORIZED.value()); - out(response, ApiResult.error(STATE.ServiceConnectRefused, "请更新版本!")); - } else { - if (appPlatform.startsWith("pc")) { - filterChain.doFilter(request, response); + if (WHITE_LIST.stream().noneMatch(path -> request.getRequestURI().endsWith(path))) { + String appPlatform = request.getHeader("App-Platform"); + response.setStatus(HttpServletResponse.SC_OK); + if (StrUtil.isBlank(appPlatform)) { + log.error("请求头中未找到App-Platform"); + response.setStatus(HttpStatus.UNAUTHORIZED.value()); + out(response, ApiResult.error(STATE.ServiceConnectRefused, "请更新版本!")); } else { - String appVersion = request.getHeader("App-Version"); - if (StrUtil.isBlank(appVersion)) { - log.error("请求头中未找到App-Version"); - out(response, ApiResult.error(STATE.ServiceConnectRefused, "请更新版本!")); - } else if (VersionComparator.INSTANCE.compare(appVersion, MIN_SUPPER_VERSION) < 0) { - out(response, ApiResult.error(STATE.ServiceConnectRefused, "版本太低,请更新版本!")); - } else { + if (appPlatform.startsWith("pc")) { filterChain.doFilter(request, response); + } else { + String appVersion = request.getHeader("App-Version"); + if (StrUtil.isBlank(appVersion)) { + log.error("请求头中未找到App-Version"); + out(response, ApiResult.error(STATE.ServiceConnectRefused, "请更新版本!")); + } else if (VersionComparator.INSTANCE.compare(appVersion, MIN_SUPPER_VERSION) < 0) { + out(response, ApiResult.error(STATE.ServiceConnectRefused, "版本太低,请更新版本!")); + } else { + filterChain.doFilter(request, response); + } } } }