1.为什么需要网关

为了不让任何人都能访问我们的微服务,对用户的身份进行一个验证,如果是内部人员才允许访问,如果不是就拦截禁止访问。一切请求都得通过网关在进入到微服务中。

2.搭建网关服务

2.1 创建新的module引入依赖

<!--网关依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>


创建启动类

2.2 搭建网关服务 编写路由和nacos配置

这些配置是为了让我们的网关能联系上nacos

  server:port: 10010 # 网关入口spring:application:name: gateway # 服务昵称cloud:nacos:server-addr: localhost:8848 # nacos地址gateway:routes:- id: user-service # 路由标识 唯一uri: lb://userservice # 路由的目标地址predicates: # 路由断言,判断请求是否符号规则- Path=/user/** # 路径断言,判断路径是否是以/user开头,如果符号就进入目标地址- id: order-serviceuri: lb://orderservicepredicates:- Path=/order/**

运行效果,访问我们的网关就能直接访问到微服务了。

请求进入网关,网关通过我们定义的路由规则带到注册中心里找到相应的地址,然后去做负载均衡

2.3 路由断言工厂


在配置文件中添加路由断言来判断时间是否符合,路由规则是不断往下判断的,只要不符合请求都不会给访问。

  gateway:routes:- id: user-service # 路由标示,必须唯一uri: lb://userservice # 路由的目标地址predicates: # 路由断言,判断请求是否符合规则- Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合- After=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]

2.4 路由过滤器


我们的请求一定要经过这些过滤器链才能到达服务,

在指定id方法下面添加过滤器

全局配置办法

2.5 全局过滤器

用来拦截一切进入网关的请求还有响应。

新建一个类来实现我们全局过滤器


// @Order(-1)
@Component
public class AuthorizeFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1.获取请求参数ServerHttpRequest request = exchange.getRequest();MultiValueMap<String, String> params = request.getQueryParams();// 2.获取参数中的 authorization 参数String auth = params.getFirst("authorization");// 3.判断参数值是否等于 adminif ("admin".equals(auth)) {// 4.是,放行return chain.filter(exchange);}// 5.否,拦截// 5.1.设置状态码exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);// 5.2.拦截请求return exchange.getResponse().setComplete();}}
// 也可以通过接口实现顺序@Overridepublic int getOrder() {return -1;}
}

看看效果,访问其他地址不行。

正确配置就放行

就可以实现简单的登录逻辑了

2.6 过滤器的执行顺序


2.7 跨域问题

只要域名不一样或者端口不一样互相访问就叫跨域。浏览器禁止ajax跨域请求。

解决跨域问题

spring:cloud:gateway:# 。。。globalcors: # 全局的跨域处理add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题corsConfigurations:'[/**]':allowedOrigins: # 允许哪些网站的跨域请求 - "http://localhost:8090"allowedMethods: # 允许的跨域ajax的请求方式- "GET"- "POST"- "DELETE"- "PUT"- "OPTIONS"allowedHeaders: "*" # 允许在请求中携带的头信息allowCredentials: true # 是否允许携带cookiemaxAge: 360000 # 这次跨域检测的有效期

统一网关Gateway快速入门相关推荐

  1. 【微服务】—— 统一网关Gateway

    文章目录 1. 概述 1.1 为什么需要网关 1.2 SpringCloud Gateway 2. gateway快速入门 搭建网关服务 1.创建新的module,引入SpringCloudGatew ...

  2. 「微服务系列」统一网关Gateway

    为什么需要网关 网关功能: 身份认证和权限校验 服务路由.负载均衡 请求限流 在SpringCloud中网关的实现包括两种: Zuul:基于Servlet的实现,属于阻塞式编程. SpringClou ...

  3. day02 Nacos集群配置、Feign远程调用和统一网关Gateway

    1.Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来使用. 统一配置管理 当微服务部署的实例越来越多,达到数十.数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错.我们需要一 ...

  4. 【微服务技术09】统一网关Gateway

    [微服务技术09]统一网关Gateway 案例代码:https://gitee.com/pikachu2333/spring-cloud-hexuan 1.网关作用 网关功能: 身份认证和权限校验 服 ...

  5. SpringCloud Gateway 快速入门_01

    文章目录 一.网关模块搭建 1. 引入依赖 2. 配置 3. 启动类 二.产品服务模块搭建 2.1. 引入依赖 2.2. 配置 2.3. 控制层 2.4. 启动类 2.5. 启动产品模块 三.启动中间 ...

  6. SpringCloud:统一网关Gateway

    目录 1.网关介绍 2.搭建网关服务 3.路由断言工厂 4.路由过滤器 5.全局过滤器GlobalFilter 6.过滤器执行顺序 7.跨域问题处理 1.网关介绍 网关(Gateway)又称网间连接器 ...

  7. 【Gateway】统一网关Gateway学习记录

    目录 网关能干什么 网关的技术实现 搭建网关服务 网关作用流程图 路由断言工厂(Route Predicate Factory) gateway中有三种过滤器: 1. 默认过滤器(DefaultFit ...

  8. SpringCloud系列(七)最详细最全面详述统一网关 Gateway

     有道词典上对 Gateway 有大门口, 门道, 通道以及计算机术语中的网关之意, 其实对于网关这个概念是很好理解的, 例如有这样高档的小区车库, 当开车经过闸口的时候会识别你的车牌号, 识别成功后 ...

  9. Spring Cloud(六)服务网关 zuul 快速入门

    服务网关是微服务架构中一个不可或缺的部分.通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由.均衡负载功能之外,它还具备了权限控制等功能.Spring Cloud Netflix中 ...

最新文章

  1. java云服务器系统选择,java云服务器系统选择
  2. 深度学习--Matlab使用LSTM长短期记忆网络对负荷进行分类
  3. 点击开启此虚拟机时,出现“该虚拟机似乎正在使用中”问题
  4. java基础巩固笔记(5)-多线程之线程并发库
  5. Java中try必须要结合catch吗_如何优雅的实现 try/catch 异常块?
  6. spring data jpa 查询部分字段列名无效问题
  7. 大学四年,这个Java自习路线,让我现在进了阿里
  8. 国家出手,终于不用再担心网上「​裸奔」​了!
  9. ps文件太大无法保存?
  10. 支教笔记 我在泸定的那十天
  11. 【安装windows10 RTX3090 tensorflow的开发环境】
  12. FFmpeg av_frame_free崩溃可能原因
  13. 【真题分享】2021京东春招java开发面试
  14. Rails出现ROLLBACK TO SAVEPOINT active_record_1信息的解决
  15. 电力电子系统的保护设计
  16. 浅谈Python中对象是如何被调用的
  17. 按时间检索中,开始时间为00:00:00,结束时间为23:59:59
  18. 江湖风云录-洛阳金刀门
  19. BQ25703 评估板测试
  20. UVA - 11400 Lighting System Design(照明系统设计)(dp)

热门文章

  1. python编程比赛初赛 组成最小罗马数字_Python每日一编程小练习(2019.06.13)——罗马数转换为整数...
  2. 是谁占用了我们的带宽:流量实时监控
  3. 项目管理助力颠覆性科技落地 应对复杂商业环境
  4. 围棋术语 中英文 。
  5. 【HBase】列族属性详解
  6. 虹软java接摄像头_Java使用虹软SDK做人脸识别之十分简单的入门
  7. 旗帜软件工作室2021年年度交接会议总结
  8. 熊猫直播事件再现?王思聪撤资IG股权仅占27%,电竞行业要变天?
  9. 湛江中医治疗慢性鼻炎秘方
  10. Python文件操作详解(一)