Spring cloud Gateway 指定执行过滤器 (在配置文件中配置所需要过滤器)

                                   Spring cloud Gateway  指定执行过滤器 

                                               在配置文件中配置所需要过滤器

gateway的配置过滤器分为两种

①:全局过滤器

全局过滤器 不需要在配置文件配置,所有到服务的请求都会进行拦截,


/**
 * @author 荡漾
 * @title: TokenFilter
 * @projectName gateway
 * @description: TODO token校验全局过滤器
 * @date 2019/6/21  12:41
 */
@Configuration
@Slf4j
public class TokenFilter implements GlobalFilter, Ordered {

    @Override
    public int getOrder() {
        return -10000;
    }

 @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
       return chain.filter(exchange);
  }
}

②:指定过滤器

需要继承 AbstractGatewayFilterFactory  

优点,可在配置文件中配置,可以为某个服务指定过滤器,

只需把filter对应的名字写入配置文件即可如图:

这里值得注意的是, 如果你filter的名称后缀是 GatewayFilterFactory 如 TestGatewayFilterFactory 在配置文件中只需要写Test即可 如果不是那就写全称就可以了


@Component
@Slf4j
public class Test  extends AbstractGatewayFilterFactory<Test.NameConfig> {


    public Test() {
        super(NameConfig.class);
        log.info("Loaded GatewayFilterFactory [Authorize]");
    }

    @Override
    public GatewayFilter apply(Test.NameConfig config) {
        return (exchange, chain) -> {
            System.out.println("=  =  =  =  =  = 执行了=  =  =  =  =  =  =  =");
            return chain.filter(exchange);
        };
    }
    public static class NameConfig {

        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

    }
}

参考: stackoverflow 

发布了66 篇原创文章 · 获赞 85 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/qq_38380025/article/details/104894916