zuul服务过滤
Posted xiao--y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zuul服务过滤相关的知识,希望对你有一定的参考价值。
1 @Component 2 public class MyFilter extends ZuulFilter { 3 4 private static Logger log = LoggerFactory.getLogger(MyFilter.class); 5 @Override 6 public String filterType() { 7 return "pre"; 8 } 9 10 @Override 11 public int filterOrder() { 12 return 0; 13 } 14 15 @Override 16 public boolean shouldFilter() { 17 return true; 18 } 19 20 @Override 21 public Object run() { 22 RequestContext ctx = RequestContext.getCurrentContext(); 23 HttpServletRequest request = ctx.getRequest(); 24 log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString())); 25 Object accessToken = request.getParameter("token"); 26 if(accessToken == null) { 27 log.warn("token is empty"); 28 ctx.setSendZuulResponse(false); 29 ctx.setResponseStatusCode(401); 30 try { 31 ctx.getResponse().getWriter().write("token is empty"); 32 }catch (Exception e){} 33 34 return null; 35 } 36 log.info("ok"); 37 return null; 38 } 39 }
filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:
pre:路由之前
routing:路由之时
post: 路由之后
error:发送错误调用
filterOrder:过滤的顺序
shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。
run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。
以上是关于zuul服务过滤的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud系列八:Zuul 路由访问(Zuul 的基本使用Zuul 路由功能zuul 过滤访问Zuul 服务降级)
SpringCloud系列八:Zuul 路由访问(Zuul 的基本使用Zuul 路由功能zuul 过滤访问Zuul 服务降级)