Gateway使用时不走全局过滤器
报错
今天配置nacos+gateway
作为项目的基础,想通过gateway
的过滤器进行token
的校验。百度后,发送请求,进行网关找到对应的服务,但是没有进行token校验。每次请求都能够进入到方法体中。
自定义过滤器:
@Component
public class TokenFilter implements GatewayFilter, Ordered {
@Resource
private RedisUtils redisUtils;
/**
* token过滤
*/
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
return chain.filter(exchange);
}
@Override
public int getOrder() {
// ordered的值越大,优先级越低,越靠后执行
return -2;
}
}
配置文件中信息:
spring:
cloud:
gateway:
discovery:
locator:
enabled: true #自动匹配nacos中服务名称,不用我们每次都进行服务路由配置
lower-case-service-id: true # 小写名称匹配
# routes:
# - id: function
# uri: lb://service-function
# predicates:
# - Path=/function/**
# - id: ebook
# uri: lb://service-ebook # nacos 中服务的名称
# predicates: # 断言类型: Path、Query、Method、Header等,写法必须遵循 key=vlue的形式
# - Path=/ebook/**
default-filters:
- StripPrefix=1 # 1 表示: /ebook/auth/code => /auth/code
查找:
Gateway的过滤器,分为两种一个是全局过滤器(GlobalFilter,10个),一个是配置文件生成的过滤器(由配置文件得到的2个过滤器,StripPrefix=1 与 lb://serviceid),但自定义的过滤器,却看不到。
处理
public class TokenFilter implements GlobalFilter, Ordered {}
这样在全局过滤器中就能找到了
参考资料:https://www.oschina.net/question/2303434_2317418?sort=time