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;
}
}
}