修复Myfilter 里重复读引入的www 的body传不到后端的问题

This commit is contained in:
weiweiw 2024-09-23 18:00:30 +08:00
parent 537cfe5c9b
commit 4f73e93990
3 changed files with 9 additions and 3 deletions

View File

@ -25,7 +25,8 @@ public class MyFilter extends OncePerRequestFilter {
@Override @Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
if (SystemGlobal.POST.equals(request.getMethod()) || SystemGlobal.PUT.equals(request.getMethod()) ){ // System.out.print("MyFilter doFilterInternal");
if (SystemGlobal.POST.equals(request.getMethod()) || SystemGlobal.PUT.equals(request.getMethod()) ){
//去除文件上传 //去除文件上传
String header = request.getHeader(HttpHeaders.CONTENT_TYPE); String header = request.getHeader(HttpHeaders.CONTENT_TYPE);
if(StringUtils.isNotEmpty(header)){ if(StringUtils.isNotEmpty(header)){
@ -35,7 +36,7 @@ public class MyFilter extends OncePerRequestFilter {
} }
} }
//解决 无法流重复读取的问题 //解决 无法流重复读取的问题
ReadHttpRequestWrapper requestWrapper = new ReadHttpRequestWrapper(request); ReadHttpRequestWrapper requestWrapper = new ReadHttpRequestWrapper(request, request.getParameterMap());
filterChain.doFilter(requestWrapper, response); filterChain.doFilter(requestWrapper, response);
}else{ }else{
filterChain.doFilter(request, response); filterChain.doFilter(request, response);

View File

@ -8,6 +8,7 @@ import java.io.BufferedReader;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.Map;
/** /**
* *
@ -17,11 +18,13 @@ public class ReadHttpRequestWrapper extends HttpServletRequestWrapper {
private final String body; private final String body;
private final Map<String, String[]> parameters;
/** /**
* *
* @param request * @param request
*/ */
public ReadHttpRequestWrapper(HttpServletRequest request) throws IOException { public ReadHttpRequestWrapper(HttpServletRequest request,Map<String, String[]> parameters) throws IOException {
super(request); super(request);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
BufferedReader reader = request.getReader(); BufferedReader reader = request.getReader();
@ -29,6 +32,7 @@ public class ReadHttpRequestWrapper extends HttpServletRequestWrapper {
while((readCount = reader.readLine()) != null){ while((readCount = reader.readLine()) != null){
sb.append(readCount); sb.append(readCount);
} }
this.parameters = parameters;
body = sb.toString(); body = sb.toString();
} }

View File

@ -1,3 +1,4 @@
#com.bonus.common.security.config.MyFilter
com.bonus.common.security.config.WebMvcConfig com.bonus.common.security.config.WebMvcConfig
com.bonus.common.security.config.VerificationCodeConfig com.bonus.common.security.config.VerificationCodeConfig
com.bonus.common.security.service.TokenService com.bonus.common.security.service.TokenService