企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 概述 Zuul作为网关的其中一个重要功能,就是实现请求的鉴权.而这个动作我们往往是通过Zuul提供的过滤器来实现的. ## ZuulFilter Zuul中的顶级过滤器是ZuulFilter.其中定义了四个最重要的方法. ``` public abstract ZuulFilter implements IZuulFilter{ abstract public String filterType(); //过滤器类型 abstract public int filterOrder(); //过滤器顺序.这个值越大,优先级越低 boolean shouldFilter(); //来自IZuulFilter.要不要过滤 Object run() throws ZuulException; //IZuulFilter. 过滤逻辑 } ``` * `shouldFilter`:返回一个`Boolean`值,判断该过滤器是否需要执行。返回true执行,返回false不执行。 * `run`:过滤器的具体业务逻辑。 * `filterType`:返回字符串,代表过滤器的类型。包含以下4种: * `pre`:请求在被路由之前执行 * `routing`:在路由请求时调用 * `post`:在routing和errror过滤器之后调用 * `error`:处理请求时发生错误调用 * `filterOrder`:通过返回的int值来定义过滤器的执行顺序,数字越小优先级越高。 ## 过滤器执行生命周期 ![](https://box.kancloud.cn/05d64842ae0abeafda7a34aa52bfab65_538x339.png) * 正常流程: * 请求到达首先会经过pre类型过滤器,而后到达routing类型,进行路由,请求就到达真正的服务提供者,执行请求,返回结果后,会到达post过滤器。而后返回响应。 * 异常流程: * 整个过程中,pre或者routing过滤器出现异常,都会直接进入error过滤器,再error处理完毕后,会将请求交给POST过滤器,最后返回给用户。 * 如果是error过滤器自己出现异常,最终也会进入POST过滤器,而后返回。 * 如果是POST过滤器出现异常,会跳转到error过滤器,但是与pre和routing不同的时,请求不会再到达POST过滤器了。 ## 所有内置过滤器列表 ![](https://box.kancloud.cn/74b12eebef18f7ff7ce34e7a296eac1c_560x485.png) ## 使用场景 * 请求鉴权:一般放在pre类型,如果发现没有访问权限,直接就拦截了 * 异常处理:一般会在error类型和post类型过滤器中结合来处理。 * 服务调用时长统计:pre和post结合使用。