package cn.lili.security;
|
import org.springframework.core.Ordered;
|
import org.springframework.core.annotation.Order;
|
import org.springframework.stereotype.Component;
|
import org.springframework.web.filter.OncePerRequestFilter;
|
import org.springframework.web.util.ContentCachingRequestWrapper;
|
|
import javax.servlet.FilterChain;
|
import javax.servlet.ServletException;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
|
/**
|
* lmk-shop-java
|
*
|
* @author : zxl
|
* @date : 2025-11-20 13:35
|
**/
|
@Component
|
@Order(Ordered.HIGHEST_PRECEDENCE)
|
public class GlobalRequestCachingFilter extends OncePerRequestFilter {
|
|
@Override
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
throws ServletException, IOException {
|
// 包装所有请求,支持重复读取请求体
|
ContentCachingRequestWrapper wrappedRequest = new ContentCachingRequestWrapper(request);
|
// 统一设置UTF-8编码,避免表情乱码
|
response.setCharacterEncoding("UTF-8");
|
response.setContentType("application/json;charset=UTF-8");
|
|
filterChain.doFilter(wrappedRequest, response);
|
}
|
}
|