Commit ca65267f6d224de3ca381615705a4dfd1839cdee

Authored by YunaiV
1 parent 5cbba763

fix:CacheRequestBodyFilter 导致 Spring Boot Admin 无法修改日志级别,https://github.com/Yuna…

…iV/ruoyi-vue-pro/issues/795
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/filter/CacheRequestBodyFilter.java
1 package cn.iocoder.yudao.framework.web.core.filter; 1 package cn.iocoder.yudao.framework.web.core.filter;
2 2
  3 +import cn.hutool.core.util.StrUtil;
3 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; 4 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
4 import org.springframework.web.filter.OncePerRequestFilter; 5 import org.springframework.web.filter.OncePerRequestFilter;
5 6
@@ -16,6 +17,14 @@ import java.io.IOException; @@ -16,6 +17,14 @@ import java.io.IOException;
16 */ 17 */
17 public class CacheRequestBodyFilter extends OncePerRequestFilter { 18 public class CacheRequestBodyFilter extends OncePerRequestFilter {
18 19
  20 + /**
  21 + * 需要排除的 URI
  22 + *
  23 + * 1. 排除 Spring Boot Admin 相关请求,避免客户端连接中断导致的异常。
  24 + * 例如说:<a href="https://github.com/YunaiV/ruoyi-vue-pro/issues/795">795 ISSUE</a>
  25 + */
  26 + private static final String[] IGNORE_URIS = {"/admin", "/actuator"};
  27 +
19 @Override 28 @Override
20 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) 29 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
21 throws IOException, ServletException { 30 throws IOException, ServletException {
@@ -24,7 +33,13 @@ public class CacheRequestBodyFilter extends OncePerRequestFilter { @@ -24,7 +33,13 @@ public class CacheRequestBodyFilter extends OncePerRequestFilter {
24 33
25 @Override 34 @Override
26 protected boolean shouldNotFilter(HttpServletRequest request) { 35 protected boolean shouldNotFilter(HttpServletRequest request) {
27 - // 只处理 json 请求内容 36 + // 1. 校验是否为排除的 URL
  37 + String requestURI = request.getRequestURI();
  38 + if (StrUtil.containsAny(requestURI, IGNORE_URIS)) {
  39 + return true;
  40 + }
  41 +
  42 + // 2. 只处理 json 请求内容
28 return !ServletUtils.isJsonRequest(request); 43 return !ServletUtils.isJsonRequest(request);
29 } 44 }
30 45