request Body的传过来的参数,只能被读取一次 ,用来缓存 解决

/**

* @Order(value = 1) 过滤器优先级处理

* 通过过滤器将ServerletRequest封装成ContentCachingRequestWrapper,body被读取后,会被它缓存

* 原因 request Body的传过来的参数,只能被读取一次,所以封装成这个类,用来缓存。

* ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) request;

* String body = StringUtils.toEncodedString(wrapper.getContentAsByteArray(), Charset.forName(wrapper.getCharacterEncoding()));

*/

@Component

@Order(value = 1)

public class RequestWrapperFilter extends OncePerRequestFilter {

@Override

protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {

//将authCode放到attrihbute中权限系统会使用

if(httpServletRequest.getHeader(RequestConstant.TOKEN)!=null){

httpServletRequest.setAttribute(RequestConstant.TOKEN,httpServletRequest.getHeader(RequestConstant.TOKEN));

}

filterChain.doFilter(new ContentCachingRequestWrapper(httpServletRequest), httpServletResponse);

}

}

猜你喜欢

转载自blog.csdn.net/qq_33715846/article/details/90203519