gateway 相关文章
Spring cloud gateway 处理跨域问题
Spring cloud gateway 拦截请求404 等HTTP 状态码
Spring cloud gateway 修改response 截断问题,乱码问题解决
Spring cloud gateway 详解和配置使用(文章较长)
Spring cloud gateway 设置https 和http同时支持
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;
}
}
}