public class AuthorizeFilter implements Ordered, GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
return null;
}
@Override
public int getOrder() {
return 0;
}
}
钔 生 温馨提醒您: 菜就多练,输不起就别玩(dage) 每日力扣打卡了吗(doge)
在 Spring Cloud Gateway 中
AuthorizeFilter 类实现 Ordered 和 GlobalFilter 两个接口是为了创建一个自定义全局过滤器
全局过滤器可以在请求路由到具体服务之前执行预处理逻辑,例如进行权限校验、认证或其他通用的拦截操作。
- GlobalFilter:这是 Spring Cloud Gateway 提供的一个核心接口,所有全局过滤器都应实现这个接口。通过实现 GlobalFilter,开发者可以定义一个过滤器来参与到整个网关请求生命周期中。GlobalFilter 接口中有一个关键方法 filter(),它接受 ServerWebExchange(封装了 HTTP 请求和响应上下文)和 GatewayFilterChain(用于继续执行后续过滤器链)作为参数。在这个方法里,开发者可以编写自己的业务逻辑,比如检查请求头中的令牌信息以判断用户是否具有访问特定资源的权限。
- Ordered:Spring Framework 中提供的一个接口,用来表示组件具有排序的能力。在 Spring Cloud Gateway 中,所有的 GlobalFilter 都可以通过实现 Ordered 来指定它们在过滤器链中的执行顺序。Ordered 接口包含一个 getOrder() 方法,返回一个整数值,值越小优先级越高,执行顺序越靠前。这样可以根据过滤器的功能需求灵活控制其执行顺序,确保不同的过滤器按照预期的逻辑顺序运行。