引入依赖

<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>
</dependencies>

自定义过滤器

可以继承 AbstractGatewayFilterFactory 或实现 GlobalFilter 实现过滤请求功能

GatewayFilter

GatewayFilter 只能指定路径上应用

import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;@Component
public class AuthGatewayFilterFactory extends AbstractGatewayFilterFactory<AuthGatewayFilterFactory.Config> {public AuthGatewayFilterFactory() {super(Config.class);}@Overridepublic GatewayFilter apply(Config config) {return (exchange, chain) -> {System.out.println("Welcome to AuthFilter.");String token = exchange.getRequest().getHeaders().getFirst("sign");if (Config.secret.equals(token)) {return chain.filter(exchange);}ServerHttpResponse response = exchange.getResponse();response.setStatusCode(HttpStatus.UNAUTHORIZED);return response.setComplete();};}static class Config {static String secret = "1234";}
}
spring:cloud:gateway:routes:- id: service2_routeuri: http://127.0.0.1:8082predicates:- Path=/s2/**filters:- StripPrefix=1 # 去掉路径的 n 个前缀- Auth=true # 输入过滤器类的名称前缀

GlobalFilter

GlobalFilter 可以在全局应用

import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;@Component
public class AuthGlobalFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {System.out.println("Welcome to AuthGlobalFilter.");ServerHttpRequest request = exchange.getRequest();String sign = request.getHeaders().get("sign").get(0);String token = "1234";if(token.equals(sign)) {return chain.filter(exchange);}ServerHttpResponse response = exchange.getResponse();response.setStatusCode(HttpStatus.UNAUTHORIZED);return response.setComplete();}@Overridepublic int getOrder() {return 0;}
}

Spring Cloud Gateway 使用 Token 验证相关推荐

  1. Spring Cloud Gateway 实现Token校验

    目录 前言 1. 生成Token 1.1. Token生成与校验工具类 1.2. 生成token 2. 校验Token 3. Spring Cloud Gateway 3.1. GatewayFilt ...

  2. Spring Cloud Gateway实现网关统一鉴权,网关统一Token认证

    需求背景 在微服务的场景下,采用了Spring Cloud Oauth2进行token的管理,实现认证和授权,在这下背景下,有两种解决方案: 网关统一鉴权 此模式适用于网关下的所有模式都是通过一种模式 ...

  3. spring cloud gateway之filter篇

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 在上一篇文章详细的介绍了Gateway的Predict,Predict决定了请求由哪一个路由处理, ...

  4. Spring Cloud Gateway 雪崩了,该怎么办不要慌

    问题现象与背景 昨晚我们的网关雪崩了一段时间,现象是: 1.不断有各种微服务报异常:在写 HTTP 响应的时候,连接已经关闭: reactor.netty.http.client.PrematureC ...

  5. Spring Cloud Gateway 入门

    认识 Spring Cloud Gateway Spring Cloud Gateway 是一款基于 Spring 5,Project Reactor 以及 Spring Boot 2 构建的 API ...

  6. 微服务接入oauth2_微服务权限终极解决方案,Spring Cloud Gateway+Oauth2实现统一认证和鉴权!...

    最近发现了一个很好的微服务权限解决方案,可以通过认证服务进行统一认证,然后通过网关来统一校验认证和鉴权.此方案为目前最新方案,仅支持Spring Boot 2.2.0.Spring Cloud Hox ...

  7. spring react_使用Spring Cloud Gateway保护React式微服务

    spring react 朋友不允许朋友写用户身份验证. 厌倦了管理自己的用户? 立即尝试Okta的API和Java SDK. 数分钟之内即可在任何应用程序中对用户进行身份验证,管理和保护. 所以你想 ...

  8. 使用Spring Cloud Gateway保护反应式微服务

    朋友不允许朋友写用户身份验证. 厌倦了管理自己的用户? 立即尝试Okta的API和Java SDK. 在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护. 所以你想完全反应,是吗? 大! ...

  9. Spring Cloud —— Gateway 服务网关

    导航 一.什么是服务网关 二.业界常见网关组件 三.Spring Cloud Gateway 四.Gateway 快速入门 4.1 创建 gateway 服务 4.2 添加 gateway 依赖和 n ...

最新文章

  1. 简单几步让CentOS系统时间同步
  2. Spring Cloud Alibaba发布第二个版本,Spring 发来贺电
  3. 帝国CMS的phomenewspic/ecmsinfo标签详解
  4. 20165220 第七周学习总结
  5. MySQL explain
  6. 苏宁大数据怎么运营_运营商大数据精准获客
  7. k均值聚类算法案例 r语言iris_聚类分析—系统聚类
  8. Linux下安装python及MySQLdb
  9. 在uniapp中配置并colorui及阿里图标
  10. STM32进行软件调试步骤:
  11. 游戏邦社交游戏-手机游戏行业分析报告(2010年版)
  12. java的LocalDateTime类来获取当天时间、前一天时间,本周的开始和结束时间、本月的开始和结束时间
  13. 实例:用C#.NET手把手教你做微信公众号开发(19)--使用微信支付转账到微信粉丝零钱账户
  14. 端点科技春招笔试回忆(Java方向)
  15. 如何写一个自动重复发消息的脚本,聪哥手把手教你(适配任何可发消息的app),亲测有效
  16. C++使用windowAPI开启3389端口
  17. Gitlab和AD账号集成,账号登录时报错:Invalid credentials
  18. 阿里云虚拟主机共享和独享区别对比
  19. [codeforces 1333A] Little Artem 读懂题+找规律+多举例
  20. json数据导出到excel中

热门文章

  1. “黑科技”要会用才行,探讨人工智能如何落地
  2. 「GAN」如何生动有趣地对GAN进行可视化?Google的GAN Lab请了解
  3. 组合求解器 + 深度学习 =?这篇ICLR 2020论文告诉你答案
  4. AAAI 2020 | 华南理工:面向文本识别的去耦注意力网络
  5. 【SAP技术】SAP不能修改一个已经分配给交货单的HU
  6. 【风之语】至贱城市之苏州
  7. 在人工智能领域,人工智能机器无法如人一样理解常识知识
  8. 谷歌发布深度学习新算法,适用于真实机器人的技能学习
  9. 中国AI科研产出全球第一 但引文影响力低
  10. 科普丨深度学习 vs 概率图模型 vs 逻辑学