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进行校验,无效的进行拦截返回提示信息到前台,有效的放行
上一篇:
一张图理清SpringMVC工作原理
下一篇:
分布式系统之容错设计-故障隔离