全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证、IP 限流等等。
自定义全局过滤器
自定义只需要实现 GlobalFilter、Ordered 两个接口就可以了,具体代码如下所示。
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());