1. 添加依赖
pom.xml
文件添加如下配置:
<properties>
<spring-cloud-gateway.version>2.2.2.RELEASE</spring-cloud-gateway.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>${spring-cloud-gateway.version}</version>
</dependency>
</dependencies>
2. 添加配置
#服务配置
server:
port: 10000
servlet:
context-path: /
spring:
application:
name: spring-boot-gateway
cloud:
gateway:
routes:
#唯一的路由ID
- id : fstdfs
# 请求的地址
uri: http://localhost:10600
predicates:
#允许访问的路径
- Path=/file/**
3. 编写过滤器
package com.huzhengxing.filter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
/**
* @Auther: zhengxing.hu
* @Date: 2020/3/23 16:20
* @Description: 全局前置过滤器
*/
@Slf4j
@Component
public class Filter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
log.info("进入前置过滤器");
return chain.filter(exchange).then(
Mono.fromRunnable(() -> {
log.info("后置调用");
})
);
}
/**
* 过滤级别,数字越小优先级越高
* @return
*/
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE;
}
}