SpringBoot 微服务token 传递实现

1、前言

随着微服务的流行,微服务之间的安全以及业务需要,都需要穿递token ,而token的传递一般通过header 头来传递。从架构的角度来讲 ,一般的企业应用都由nginx、业务网关和各个微服务组成。这个nginx 传递header 我就不讲述。下面重点讲述一下header业务网关到微服务以及微服务到微服务是怎么实现的。

2 、实现方式

2.1 业务网关传递header 头到微服务

这里网关我采用zuul 实现,大家都zuul其实就是是servlet,它设置很多内存过滤器,如果你业务需要定义过滤器,继承ZuulFilter 即可。自定过滤和内置过滤组成一个过滤器的List,根据类型实现不同的功能。网关收到请求为每一个请求创建一个RequestContext 对象此对象为Map的子类,见下面截图

,用来存储Http相关的各种信息,例如request ,reponse,header等信息。在内置路由过滤器SimpleHostRoutingFilter,如下截图

它在转发请求的会从RequestContext获取body(请求体)已经请求头(header)再通过HttpClient把请求传递到微服务。具体截图如下

由此网关传递header到微服务实现了。

2.2 微服务传递header 头到微服务实现

通常微服务之间通过fegin 或者openFegin 实现,只要实现RequestInterceptor接口就会拦截@FeginClient 的类。在此拦截器实现header的传递,当然我们也可以自定义aop 实现header传递。但完全没有必要。代码如下:

相关推荐
金銀銅鐵13 分钟前
带您看懂字节码指令(二):空循环里有什么
java·后端·ai编程
吴名氏.2 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
.痞老板.3 小时前
java ee--多线程(进阶)
java·java-ee
深入云栈4 小时前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
Jackzhang4 小时前
[运维排障实录] 第一次遇到 502 别急着重启:按「一条线」把问题查清楚
spring boot
wang_shu_mo_ran5 小时前
MyBatis 从入门到进阶(一)
java·spring·mybatis
量化分析码农7 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端
猫猫不是喵喵.7 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
瑞雪兆丰年兮7 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
曲径海盗7 小时前
Try-Except怎么用,3个追问解答在自动化下的应用
java·jvm·oracle