4.5 过虑器
Zuul的核心就是过虑器,通过过虑器实现请求过虑,身份校验等。
4.5.1 ZuulFilter
自定义过虑器需要继承 ZuulFilter,ZuulFilter是一个抽象类,需要覆盖它的四个方法,如下:
1、 shouldFilter:返回一个Boolean值,判断该过滤器是否需要执行。返回true表示要执行此过虑器,否则不执行。
2、 run:过滤器的业务逻辑。
3、 filterType:返回字符串代表过滤器的类型,
如下
pre:请求在被路由之前执行
routing:在路由请求时调用
post:在routing和errror过滤器之后调用
error:处理请求时发生错误调用

4、 filterOrder:此方法返回整型数值,通过此数值来定义过滤器的执行顺序,数字越小优先级越高。

定义测试类‘
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP
一定要继承ZuulFilter
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP

实现方法
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP
这个类 一定要用@Component 因为他是spring 容器的一个Bean
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP

阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP

阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP

测试方法

过虑所有请求,判断头部信息是否有Authorization,如果没有则拒绝访问,否则转发到微服务。

从request里面拿到头信息,所以需要先得到request。Zuul给我们提供了RequestContext获取上下文对象
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP
从上下文中就拿到了request
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP

设置响应,上面还需要拿到Response
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP

阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP

每一个路由进来都会经过过滤器

请求测试
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP
进入到断点
阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP

阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_16-网关-过虑器-LMLPHP

结束

05-11 13:48