zuul过滤器配置
1.增加InfraPreZuulFilter文件,继承ZuulFilter
@Component
public class InfraPreZuulFilter extends ZuulFilter {
@Override
public String filterType() {
return FilterConstants.PRE_TYPE;// 可以在请求被路由之前调用
}
@Override
public int filterOrder() {
return 0;
}
//是否要被过滤,可以增加自己的业务逻辑判断最后返回 true or false
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() throws ZuulException {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest servletRequest = ctx.getRequest();
String str = servletRequest.getParameter("token");
// 这里过滤掉你需要过滤的请求,比如 session token 等等,做个演示
if(StringUtils.isNotBlank(str)&&str.length()<1000){
// 拦截测试
ctx.setSendZuulResponse(false); //表示 非法请求
ctx.setResponseStatusCode(401);
ctx.setResponseBody("拦截掉请求"); //返回类容,这里组装你要返回的信息
ctx.getResponse().setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
return null;
}else {
ctx.setSendZuulResponse(true);
ctx.setResponseStatusCode(200);
System.out.println(servletRequest.getRequestURL().toString());
}
return null;
}
}