问题:利用postMan或HttpClient发送post请求,参数请求格式为form-data,经过ZuulFilter过滤器获取不到提交的参数。
解决办法:
1.新建拦截器继承OncePerRequestFilter,重写doFilterInternal方法,通过HttpServletRequest 获取参数,利用RequestContext传递参数
@Component("AuthorizationFilter")
public class AuthorizationFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
//从请求参数获取token
String token = request.getParameter("token");
RequestContext ctx = RequestContext.getCurrentContext();
ctx.set("token", token);
filterChain.doFilter(request, response);
}
}
2. 在ZuulFilter中通过RequestContext读取参数
@Component
public class AccessFilter extends ZuulFilter {
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
String token = (String) ctx.get("token");
}
}