GateWay网关自定义过滤器实现token校验完成统一鉴权

一、基础知识

gateWay---API网关,也可以称为业务网关,主要服务于微服务的;

(1) 三大组件

    路由(Route)

构建网关的基本模块,由id(唯一标示)、目标URI、一组断言、一组过滤器组成,如果断言为true,则匹配该路由

    断言(Predicate)

可以使用它匹配来自HTTP请求的任何内容,例如headers或参数

    多滤器(Filter)

Gate中的Filter分为两种类型,Gateway Filter和Global Filter;过滤器Filter将会对请求和响应进行修改处理

(2)运行流程

(3) 搭建网关服务

    引入网关依赖和nacos服务发现依赖
<!--网关依赖-->
<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>
    <version>2.2.5.RELEASE</version>
</dependency>
    编写路由配置和nacos地址
cloud:
    gateway:
      globalcors: #全局的跨域处理
        add-to-simple-url-handler-mapping: true #解决optoins请求被拦截的问题
        corsConfigurations:
          [/**]:
            #允许在请求中携带的头信息
            allowedHeaders: "*"
            #允许哪些网站跨域
            allowedOrigins: "*"
            allowed-methods: #允许跨域请求的方式
              - GET
              - POST
              - DELETE
              - PUT
              - OPTION
      routes: #网关路由配置
        #探花系统
        - id: tanhua-app-server
          uri: lb://tanhua-app-server #路由的目标地址,lb是负载均衡:服务名称
          predicates: #路由断言,判断请求是否符合路由的规则
            - Path=/app/**
          filters: #过滤器
            - StripPrefix= 1 #去掉url部分前缀
        #后台系统
        - id: tanhua-admin
          uri: lb://tanhua-admin
          predicates:
            - Path=/admin/**
          filters:
            - StripPrefix= 1

三、实现步骤

(1)自定义过滤器

需要实现两个接口(GlobaFilter、Ordered);重写两个方法filter( )---负责鉴权的业务逻辑,getOrdered()---设置过滤器执行的顺序

(2)在过滤器的filter方法中完成鉴权的业务逻辑

1.对与特殊的接口,不进行校验,直接放行

2.获取请求信息中的Token

3.对Token进行校验,无效的进行拦截返回提示信息到前台,有效的放行

经验分享 程序员 微信小程序 职场和发展