pig java api_pig CheckToken过程讲解

## CheckToken的目的

当用户携带token 请求资源服务器的资源时, **OAuth2AuthenticationProcessingFilter** 拦截token,进行token 和userdetails 过程,把无状态的token 转化成用户信息。

![](https://gitee.com/pig4cloud/oss/raw/master/2020-9/20200901152554.png)

## 详解

1. OAuth2AuthenticationManager.authenticate(),filter执行判断的入口

2.

![](https://gitee.com/pig4cloud/oss/raw/master/2020-9/20200901152607.png)

2. 当用户携带token 去请求微服务模块,被资源服务器拦截调用RemoteTokenServices.loadAuthentication ,执行所谓的check-token过程。

源码如下

![](https://gitee.com/pig4cloud/oss/raw/master/2020-9/20200901152620.png)

3. CheckToken 处理逻辑很简单,就是调用redisTokenStore 查询token的合法性,及其返回用户的部分信息 (username )

![](https://gitee.com/pig4cloud/oss/raw/master/2020-9/20200901152628.png)

4. 继续看 返回给 RemoteTokenServices.loadAuthentication 最后一句

tokenConverter.extractAuthentication 解析组装服务端返回的信息

![](https://gitee.com/pig4cloud/oss/raw/master/2020-9/20200901152642.png)

最重要的 userTokenConverter.extractAuthentication(map);

5. 最重要的一步,是否判断是否有userDetailsService实现,如果有 的话去查根据 返回的

username 查询一次全部的用户信息,没有实现直接返回username,这也是很多时候问的为什么只能查询到username 也就是 EnablePigxResourceServer.details true 和false 的区别。

![](https://gitee.com/pig4cloud/oss/raw/master/2020-9/20200901152656.png)

6. 那根据的你问题,继续看 UerDetailsServiceImpl.loadUserByUsername 根据用户名去换取用户全部信息。

![](https://gitee.com/pig4cloud/oss/raw/master/2020-9/20200901152705.png)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值