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传递。但完全没有必要。代码如下:

相关推荐
smallyoung8 小时前
告别N+1:Spring Boot 一键数据翻译框架体系
java·后端·架构
Bazingga10 小时前
Java16 record 完整拆解——语法、语义、限制、反射
java·后端
SL_staff12 小时前
规则联动:给工厂装上‘自动化神经反射弧’——JVS·物联网平台规则引擎实战教程
java·人工智能·物联网
骑着蜗牛撵大象32712 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
WJ.Polar12 小时前
Java封装、继承、多态
java·开发语言
ly768912 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
摇滚侠12 小时前
Java 中如何表示负数,有符号和无符号的区别,补码的计算规则,char byte short int long 的范围
java·开发语言
流烟默12 小时前
SSE 实战:在 SpringBoot + Vue 项目中零依赖实现轻量级实时消息推送
vue.js·spring boot·后端·sse
奇牙coding13 小时前
Codex CLI 升级后多文件编辑静默失效:config.yaml 枚举变更排查与修复指南
java·前端·javascript·ai
小羊没烦恼!13 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp