qq_41908367 2022-06-22 11:24 采纳率: 90.4%
浏览 280
已结题

oauth2 的资源服务器获取不到用户信息怎么办

    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

资源服务器和认证服务器是两个微服务,上面这句在资源服务器中获取不到,是null的 应该怎么获取

可以调用认证服务器的oauth/check_token,但是资源服务器的token保存在哪,不能每个控制器都加上这个吧@RequestHeader("Authorization") String token ,然后获取到的user对象应该保存在哪,放到map里嘛?那token过期怎么自动删除呢。

  • 写回答

1条回答 默认 最新

  • a1767028198 2022-06-22 13:06
    关注

    资源服务器不需要存token,可以通过认证服务器的接口去check token,如果是jwt token,也可以通过去认证服务拉取jwt的配置,自行解析jwt也是可以的,本质上还是一样,资源服务器不存储token,统一通过ResourceServerTokenServices去获取凭证信息,

    img


    默认实现DefaultTokenServices,他通过tokenStore去获取凭证信息,tokenStore又是你自己配置的,redis啊,jwt都有可能;
    我们使用的是RemoteTokenServices,请求认证服务的check/token,ResourceServerTokenServices不管何种方式,拿到凭证信息了,资源服务器还是会存这个认证信息的(不存认证信息,拦截链无法放行,导致一直套娃),存到ThreadLocal中,SecurityContextHolder.getContext().getAuthentication()就能拿到了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 7月1日
  • 已采纳回答 6月23日
  • 创建了问题 6月22日

悬赏问题

  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面