1.什么是全局过滤器
- 当客户端第一次请求服务时,服务端对用户进行信息认证(登录)
- 认证通过,将用户信息进行加密形成token,返回给客户端,作为登录凭证
- 以后每次请求,客户端都携带认证的token
- 服务端对token进行解密,判断是否有效。
- SpringCloud Gateway支持自定义过滤器,可以很灵活的进行请求或者响应的控制。
- 自定义过滤器的方法是实现GlobalFilter接口、实现Ordered接口。这两个接口的全路径为:
org.springframework.cloud.gateway.filter.GlobalFilter
org.springframework.core.Ordered
2.如何定义全局过滤器:
1.GlobalFilter自己就是一个单独的接口,没有任何继承关系,里面就一个方法filter。简单理解英文:
2.GlobalFilter是一个拦截样式,链路方式处理web请求,用来实现横切面,以及一些安全,超时等需求
3.global filter有具体的类定义,我们可以在spring-cloud-gateway-server项目中找到对应的类定义。
3.总结:
1.gateway filter的定义如下,可以看到他们的接口描述基本一致,说明其用途也是相类似的。不一样的地方是GatewayFilter多定义两个属性,暂时没看到它的用途是什么。还有其继承了ShortcutConfigurable,这个应该是方便GatewayFilter做配置化的,因为GatewayFilter没有具体的实现类定义,必须从配置中读取filter信息,然后动态创建GatewayFilter。
2.网关路由请求过后,如果我们希望拦截请求,做自己的业务逻辑则可以使用GlobalFilter 全局过滤器。
3.全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与 GatewayFilter 的作用一样。区别在于 GlobalFilter 的逻辑可以写代码来自定义规则;而 GatewayFilter 通过配置定义,处理逻辑是固定的。