From 249dae6343ae220c39e0282f32bad3db4724a9e8 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Sun, 19 May 2024 20:50:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E7=BC=93?= =?UTF-8?q?=E5=AD=98bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coal/filter/CacheBodyRequestWrapper.java | 10 ++++++++++ .../cn/lihongjie/coal/filter/CacheFilter.java | 15 ++++++++++++++- .../coal/sysconfig/entity/SysConfigEntity.java | 3 ++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/filter/CacheBodyRequestWrapper.java b/src/main/java/cn/lihongjie/coal/filter/CacheBodyRequestWrapper.java index e1a62570..08e28b05 100644 --- a/src/main/java/cn/lihongjie/coal/filter/CacheBodyRequestWrapper.java +++ b/src/main/java/cn/lihongjie/coal/filter/CacheBodyRequestWrapper.java @@ -1,9 +1,11 @@ package cn.lihongjie.coal.filter; import jakarta.servlet.ReadListener; +import jakarta.servlet.ServletException; import jakarta.servlet.ServletInputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequestWrapper; +import jakarta.servlet.http.Part; import lombok.SneakyThrows; @@ -11,6 +13,7 @@ import org.apache.commons.io.IOUtils; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.util.Collection; public class CacheBodyRequestWrapper extends HttpServletRequestWrapper { @@ -35,6 +38,11 @@ public class CacheBodyRequestWrapper extends HttpServletRequestWrapper { return inputStream; } + @Override + public Collection getParts() throws IOException, ServletException { + return super.getParts(); + } + public void reset() { inputStream.reset(); } @@ -75,5 +83,7 @@ public class CacheBodyRequestWrapper extends HttpServletRequestWrapper { public int read() throws IOException { return cache.read(); } + + } } diff --git a/src/main/java/cn/lihongjie/coal/filter/CacheFilter.java b/src/main/java/cn/lihongjie/coal/filter/CacheFilter.java index b98767f5..ab73562d 100644 --- a/src/main/java/cn/lihongjie/coal/filter/CacheFilter.java +++ b/src/main/java/cn/lihongjie/coal/filter/CacheFilter.java @@ -9,7 +9,9 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.core.annotation.Order; +import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; @@ -27,7 +29,18 @@ public class CacheFilter extends OncePerRequestFilter { protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { long start = System.currentTimeMillis(); - var req = new CacheBodyRequestWrapper(request); + HttpServletRequest req = request; + + MediaType mediaType = + MediaType.parseMediaType( + ObjectUtils.defaultIfNull( + request.getContentType(), + MediaType.APPLICATION_OCTET_STREAM_VALUE)); + // 文件上传不对body进行签名 + if (!mediaType.isCompatibleWith(MediaType.MULTIPART_FORM_DATA)) { + + req = new CacheBodyRequestWrapper(request); + } filterChain.doFilter(req, response); long end = System.currentTimeMillis(); response.setHeader(Constants.HTTP_HEADER_RESPONSE_TIME, String.valueOf(end - start)); diff --git a/src/main/java/cn/lihongjie/coal/sysconfig/entity/SysConfigEntity.java b/src/main/java/cn/lihongjie/coal/sysconfig/entity/SysConfigEntity.java index b31bd8fb..80281278 100644 --- a/src/main/java/cn/lihongjie/coal/sysconfig/entity/SysConfigEntity.java +++ b/src/main/java/cn/lihongjie/coal/sysconfig/entity/SysConfigEntity.java @@ -6,6 +6,7 @@ import jakarta.persistence.Entity; import lombok.Data; +import org.apache.commons.lang3.StringUtils; import org.hibernate.annotations.Comment; @Data @@ -35,7 +36,7 @@ public class SysConfigEntity extends CommonEntity { switch (type) { case "1": - if (!configVal.matches(regexValidator)) { + if (StringUtils.isNotEmpty(regexValidator) && !configVal.matches(regexValidator)) { throw new RuntimeException("字符串不符合正则表达式"); } break;