Gateway 全局过滤器|学习笔记

简介: 快速学习 Gateway 全局过滤器

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第三阶段Gateway 全局过滤器】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/685/detail/11894


Gateway 全局过滤器


内容介绍:

一、 全局过滤器

二、内置全局过滤器

三、自定义全局过滤器


一、 全局过滤器

全局过滤器作用于所有路由,无需配置。通过全局过滤器可以实现对全县的统一校验,安全性验证等功能。


二、内置全局过滤器

SpringCloud Gateway 内部也是通过一系列的内置全局过滤器对整个路由转发进行如下处理:

image.png


三、自定义全局过滤器

内置的过滤器已经可以完成大部分的功能,但是对于企业开发的一些业务功能处理,还是需要我们自己编写过滤器来实现的,那么我们一起通过代码的形式自定义一个过滤器,去完成统一的权限校验。

开发中的鉴权逻辑:

·当客户端第一次请求服务时,服务端对用户进行信息认证(登录)

·认证通过,将用户信息进行加密形成 token,返回给客户端,作为登录凭证

·以后每次请求,客户端都携带认证的 token

·服务端对 token 进行解密,判断是否有效。

image.png

如上图,对于验证用户是否已经登录鉴权的过程可以在网关统一检验。

检验的标准就是请求中是否携带 token 凭证以及 token 的正确性。

下面的我们自定义一个 GlobalFilter,去校验所有请求的请求参数中是否包含"token”,如何不包含请求参数“token”则不转发路由,否则执行正常的逻辑。

编辑一个名称为 AuthGlobalFilter 的逻辑代码

//自定义的全局过滤器(作用是 统—鉴权)

//要求:必须实现GlobalFilter,ordered并且实现里面的两个方法

@Slf4j

@component

public class AuthGlobalFilter implements GlobalFilter,

ordered {

//过滤器逻辑

@Override

public Mono filter(ServerWebExchange exchange,GatewayFilterchain chain) {

//统─鉴权逻辑

String token = exchange. getRequest () .getQueryParams

() .getFirst ( k: "token");

if( !stringUtils.equals ( "adnin" , token)) {

//认证失败

log.info ("认证失败了...." );

exchange.getResponse().setstatuscode(Httpstatus.UNAUTHORIZED);

return exchange.getResponse ( ) .setComplete();

}

//放行

return chain.filter (exchange) ;

接下来启动代码验证一下,显示如下

image.png

因为我们设置的 unauthorized 的值就是401

当我们在访问的网址 localhost:7000/product-serv/profuct/1后加上?token=admin 页面显示的是image.png

如果传输数据不对时,页面还是

image.png

通过鉴权讲的是自定义全局过滤器编写的步骤和逻辑代码

相关文章
|
4月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
238 0
|
3月前
|
Java API 开发者
Spring Cloud Gateway中的GlobalFilter:构建强大的API网关过滤器
Spring Cloud Gateway中的GlobalFilter:构建强大的API网关过滤器
174 0
|
4月前
|
Java 微服务 Spring
SpringCloud&Gateway全局过滤器
SpringCloud&Gateway全局过滤器
65 1
|
4月前
|
JSON 安全 关系型数据库
SpringCloud Gateway 实现自定义全局过滤器 + JWT权限验证
SpringCloud Gateway 实现自定义全局过滤器 + JWT权限验证
|
Java Spring
Spring Cloud Gateway 源码剖析之Filter Chain过滤器链
Spring Cloud Gateway 源码剖析之Filter Chain过滤器链
249 0
|
缓存 JSON Java
【Java】SpringCloud Gateway自定义过滤器中获取ServerHttpRequest的body中的数据为NULL的问题
【Java】SpringCloud Gateway自定义过滤器中获取ServerHttpRequest的body中的数据为NULL的问题
508 0
|
负载均衡 前端开发 Java
统一网关Gateway、路由断言工厂、路由过滤器及跨域问题处理
统一网关Gateway、路由断言工厂、路由过滤器及跨域问题处理
237 0
|
Java Spring
Spring Cloud Alibaba - 24 Gateway-路由、断言(Predicate)、过滤器(Filter)初体验
Spring Cloud Alibaba - 24 Gateway-路由、断言(Predicate)、过滤器(Filter)初体验
115 0
|
监控 负载均衡 Cloud Native
云原生之 Gateway 的 Filter 过滤器
云原生之 Gateway 的 Filter 过滤器
云原生之 Gateway 的 Filter 过滤器
|
JSON Java 数据格式
SpringCloud GateWay通过过滤器GatewayFilter修改请求或响应内容
Spring Cloud Gateway在有些场景中需要获取request body内容进行参数校验或参数修改,我们通过在GatewayFilter中获取请求内容来获取和修改请求体,下面我们就基于ServerWebExchange来实现。
1366 0