1.网关的作用
2.网关入门
2.1引入依赖
<dependencies>
<dependency>
<groupId>com.heima</groupId>
<artifactId>hm-common</artifactId><version>1.0.0</version>
</dependency>
<!--网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--负载均衡-->
<dependency><groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName><plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId></plugin>
</plugins>
</build>
2.2配置文件
server:
port: 8080 #网关端口
spring:
application:
name: geteway #服务名称
cloud:
nacos:
server-addr: 127.0.0.1 #nacos地址
gateway:
routes:
- id: item-service #id
uri: lb://item-service #lb负载均衡,item-service微服务名称
predicates: #断言
- Path=/items/**,/search/** #断言路径
2.3启动类
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class,args);
}
}
3.网关登录校验流程
4.网关校验身份
4.1网关内过滤器流程图
注:需在转发过滤器之前进行校验用户身份
4.2实现全局过滤器GlobalFilter的filter和Ordered的getOrder;
注:前者可以在其中进行校验,后者可以设置过滤器的执行顺序,需大于int的最大值
5.微服务获取用户信息
5.1流程图
5.2网关拦截器保存用户信息到请求头
5.3微服务拿取请求头并存储
6.微服务之间传递用户信息
注:实现OpenFeign的RequestInterceptor接口的apply接口即可,使用OpenFegin进行远程调用时会自动处理