当前位置: 首页 > news >正文

解决远程调用微服务之后无法通过上下文获取用户id问题

明明通过线程获取了用户id,但是运行查询的表语句里id居然是为空的,加了一下日志输出,发现真的是空的,如下图:

然后找到了对应的代码部分,看用户传递是否有问题,然后就发现,我的代码里的用户id没有使用远程调用传递过来的参数对象里的id,所以导致传递过来之前是可以获取到的,但是传递过来就丢失了

然后我就注释掉了,获取原本传递对象里的用户id

核心原因:两个接口的线程不是同一个,远程调用的时候用的是新的线程!!!

AuthContextHolder 通常是为同服务内的请求上下文设计的(比如前端请求到达后端服务,通过拦截器解析 token 后将用户 ID 存入 ThreadLocal)。但在服务间远程调用场景下,会在新的线程里处理请求,原来线程的上下文没带过来,ThreadLocal 无法跨服务、跨线程传递,此时依赖它获取用户 ID 就会失效,因为此时就算是同一个用户,新线程也 “不知道” 这个用户的 ID,所以 AuthContextHolder.getUserId() 会返回 null

解决这类问题的核心思路是:

  • 若为同服务内请求,用 ThreadLocal 上下文(比如 AuthContextHolder)传递用户 ID;
  • 若为跨服务 / 跨线程调用,用 显式参数(比如使用对象 AccountLockVo) 传递用户 ID,避免依赖线程上下文。
http://www.dtcms.com/a/569937.html

相关文章:

  • 网站代付系统怎么做大型网站seo策略
  • 国家住房城乡建设部网站住房和城乡建设部网站北京
  • 制作网站的程序网站查找工具
  • 网站建设 图片压缩网站开发多少费用
  • React Native App 自动检测版本更新完整实现指南
  • 网站建站是 什么企业网站托管运营
  • 字母象形的力量:单词速记之多种意象融合一体
  • xtuoj Binary
  • 南沙网站开发企业网站建设需要多少钱知乎
  • python 包 检测自己是否为 editable 模式安装的
  • ToB销售获客策略全解析:实现精准客户开发方法论
  • 成都医院手机网站建设湖北做网站找谁
  • 网站需求分析怎么写设计网站大全湖南岚鸿设计
  • css 画一个圆角渐变色边框
  • 网站路径问题国外h5建站
  • 数字营销技术应用网站大连网页搜索排名提升
  • 简化Java开发——Hutool工具使用案例
  • 某次钓鱼邮件安全事件应急
  • TCP/IP 五层协议栈
  • Linex操作系统-Shell脚本(七)
  • Linux系统编程——守护进程
  • 【打靶日记】VulNyx 之 Fing
  • 个人简历模板电子版可填写郑州专业seo哪家好
  • 开发与测试的微妙平衡:从“对立”到“合作”的实战经验
  • 开源网站代码濮阳市城乡建设管理局网站
  • C++ 贪心算法(Greedy Algorithm)详解:从思想到实战
  • 新手从零开始学电脑,0元学会重装系统
  • 六安网站制作公司排名网站 绝对路径
  • AMF、SMF 和 UPF在5G网中的位置
  • 门户网站创新的方式有神马搜索seo优化排名