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

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日

悬赏问题

  • ¥15 3D多模态医疗数据集-视觉问答
  • ¥20 设计一个二极管稳压值检测电路
  • ¥15 内网办公电脑进行向日葵
  • ¥15 如何输入双曲线的参数a然后画出双曲线?我输入处理函数加上后就没有用了,不知道怎么回事去掉后双曲线可以画出来
  • ¥50 WPF Lidgren.Network.Core2连接问题
  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp