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=1lb://serviceid),但自定义的过滤器,却看不到。
image

处理

public class TokenFilter implements GlobalFilter, Ordered {}
这样在全局过滤器中就能找到了


参考资料:https://www.oschina.net/question/2303434_2317418?sort=time

posted @ 2023-05-07 19:10  之士咖啡  阅读(68)  评论(0编辑  收藏  举报