统一网关Gateway的使用:

为什么需要网关?

Gateway网关是我们服务的守门神,所有微服务的统一入口

网关的核心功能特性:

  • 网关的功能:身份认证和权限校验
  • 服务路由,负载均衡
  • 请求限流

在SpringCloud中网关的实现包括两种:

  • geteway
  • zuul

统一网关Gateway的使用:

搭建网关服务

  1. 创建新的module(模块),引入SpringCloudGateway的依赖和nacos的服务发现依赖:统一网关Gateway的使用:
  2. 编写启动类 :
package cn.itcast.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

统一网关Gateway的使用:

统一网关Gateway的使用:

总结:

网关搭建步骤:

  1. 创建项目,引入nacos服务发现和gateway依赖
  2. 配置application.yml,包括服务基本信息、nacos地址、路由

路由配置包括:

  1. 路由id:路由的唯一标示
  2. 路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡
  3. 路由断言(predicates):判断路由的规则,
  4. 路由过滤器(filters):对请求或响应做处理

路由断言工厂:

统一网关Gateway的使用:

路由过滤器 GatewayFilter:

还有一个配置 filters :路由过滤器:对请求或响应做处理

统一网关Gateway的使用:

会先经过过滤器 Spring提供了31种不同的过滤器工厂

默认过滤器 default-filters 会对所有的路由请求都生效

统一网关Gateway的使用:

全局过滤器 GlobaFilter:

统一网关Gateway的使用:

exchange 请求上下文 从请求进入开始一直到结束为止 可以拿到请求相关的信息,响应相关的信息 甚至 存东西和取东西也是可以的

chain 过滤器链 放行用的 交给下一个过滤器

自定义一个全局过滤器:

  • 参数中是否有token,
  • token参数值是否为admin

如果同时满足则放行,否则拦截

@Component
@Order(1)
public class AuthorizeFilter implements GlobalFilter {

    @Override
    public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//        1.获取请求参数
        ServerHttpRequest request = exchange.getRequest();
        MultiValueMap params = request.getQueryParams();
//        2.获取参数中的authorization参数
        String auth = params.getFirst("token");

//        3.判断参数值是否等于admin
        if ("admin".equals(auth)) {
            // 4.是 放行
            return chain.filter(exchange);
        }

//        5.否 拦截
//        设置状态码
        exchange.getResponse().setStatusCode(
                HttpStatus.UNAUTHORIZED);
        return exchange.getResponse().setComplete();

    }
}
  • 全局过滤器的作用是什么: 对所有路由都生效的过滤器,并且可以自定义处理逻辑
  • 实现全局过滤器的步骤:
  • 实现GlobalFilter接口
  • 添加@order注解或者实现Ordered接口 数值越小 优先级越高
  • 编写处理逻辑

过滤器执行顺序:

  • 当过滤器的order值一样,会按照defaultFilter > 路由过滤器 > GlobalFilter的顺序执行

统一网关Gateway的使用:

跨域问题处理:

域的组成:协议,ip,端口

  • 同域:协议,ip,端口 都相同
  • 跨域:协议,ip,端口 有一个不同

网管跨域处理的方法 CORS方案 并且只需要简单的配置就能实现

统一网关Gateway的使用:

Original: https://www.cnblogs.com/andanlife/p/16689478.html
Author: 黯淡钦凉
Title: 统一网关Gateway的使用:

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622595/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球