Spring Cloud Gateway全局过滤器 GlobalFilter

1,259 阅读1分钟

全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证、IP 限流等等。

image.png

自定义全局过滤器

自定义只需要实现 GlobalFilter、Ordered 两个接口就可以了,具体代码如下所示。 image.png

order:过滤器执行顺序,数值越小,优先级越高。


@Component
public class MyFilter implements GlobalFilter, Ordered{

@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
 //自定义网关过滤器被执行。根据自己开发业务实现
 
 return chain.filter(exchange);//继续向下执行
}

@Override
public int getOrder() {
    return ORDER;
}

}

通过全局过滤器实现统一鉴权

在全局过滤器中添加token认证的业务逻辑,如果jwt token为空,认证失败,提示获取token失败。

通过网关访问接口,header中没有加X-Auth-Token,请求失败。

return chain.filter(exchange.mutate().request(newRequest).build());

image.png

image.png