jwt怎么获取当前登录用户_如何在 Spring容器 service层获取当前登录用户信息?

慕运维8079593

什么RequestContextHolder, shiro啊这些, 你不看源码相信用起来不会安心的, 还是自己写靠谱且简洁, 原理就是使用ThreadLocal这个技术, 以前后端分离的项目(java只是接口, 不渲染界面)为例, 流程我简单说下:

用户登录成功后, 生成登录成功的token(JWT你可以看下)连同用户的基本信息往redis中插入, 登录接口返回给客户端jwt, 客户端存储到localStorage中

用户再次请求, 即有接口调用会带着jwt作为参数(可放在header中)请求服务器接口, 用filter来对jwt进行验证, 并从redis中取出当前用户的基本信息, 放到ThreadLocal中,一般我是建立一个SessionContext类, 这个类有一个addSession和getSession方法, 分别是往SessionContext的一个static field ThreadLocal插入和从ThreadLocal中取

在任何地方获取当前用户信息都ok了, Controller也好, Service也好, easy吧, 直接在任何地方调用SessionContext.getCurrentUser()即可

tip: 有@Async注解的方法不能用, 因为新建立了一个Thread, 这种异步方法获取用户信息只能参数传递进来

相信源码你就不需要了吧, 如果不明白的话, 使劲学习一下ThreadLocal就可以了, 记得给我设置为最佳答案

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值