## 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)

pig java api_pig CheckToken过程讲解相关推荐

  1. 利用计算机解决问题过程中找出已知,用计算机解决问题的过程讲解.ppt

    用计算机解决问题的过程讲解.ppt 第一章 揭开计算机解决问题的神秘面纱,第一节 计算机解决问题的过程,什么是程序,计算机的任何动作都是在执行人给它的指令.人们针对某一需要而为计算机编制的指令序列称为 ...

  2. “万字“ Java I/O流讲解

    Java I/O流讲解 每博一文案 谁让你读了这么多书,又知道了双水村以外还有一个大世界,如果从小你就在这个天地里,日出而作,日落而息. 那你现在就会和众乡亲抱同一理想:经过几年的辛劳,像大哥一样娶个 ...

  3. java 程序运行过程 简介

    这里的Java程序运行过程,是指我们编译好代码之后,在命令行开始执行java xxx命令,到java程序开始执行起来的这一过程,我们称其为运行时. 第一步,操作系统解析我们输入的java xxx命令, ...

  4. java创建对象的过程_Java创建对象的过程

    Java创建对象的过程 Java是一门面向对象的编程语言,在Java程序运行过程中每时每刻都有对象被创建出来.在语言层面上,创建对象通常仅仅是一个new关键字而已,而在虚拟机中,对象的创建又是怎样一个 ...

  5. php如何通过变量销毁unset的过程讲解

    2019独角兽企业重金招聘Python工程师标准>>> php如何通过变量销毁unset的过程讲解 unset -- 释放给定的变量 描述 void unset ( mixed va ...

  6. 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例

    53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...

  7. 【Java】类加载过程

    JVM把class文件加载到内存,并对数据进行校验.解析和初始化,最终形成JVM可以直接使用的Java类型的过程. 类加载的过程主要分为三个部分: 加载 链接 初始化 而链接又可以细分为三个小部分: ...

  8. Java经典面试套路讲解:Java Killer系列

    Java经典面试套路讲解:Java Killer系列 java编程语言是目前应用较为广泛的一门计算机编程语言,目前java市场需求量有增无减.java作为目前IT软件开发行业的重要技术之一,人才市场出 ...

  9. 下列叙述中正确的是 java语言_1. 下列关于JAVA语言特点的叙述中,错误的是[   ] A、Java是面向过程的编程语言...

    1. 下列关于JAVA语言特点的叙述中,错误的是[  ]A.Java是面向过程的编程语言   B.Java支持分布式计算C.Java是跨平台的编程语言   &... 1. 下列关于JAVA语言 ...

  10. Java高效输入输出流讲解

    Java高效输入输出流讲解 Java中执行输出和输入操作,需要通过IO流.例如最常见的System.out.println()就是一个输出流.IO流的类比较多,但核心体系就是由File. InputS ...

最新文章

  1. IAR生产HEX文件
  2. hdu1196 Lowest Bit
  3. JavaScript --- 跨浏览器的事件处理程序
  4. 检查服务器端口占用情况命令
  5. Scrum指南这么改,我看要完蛋!
  6. 冒烟的意思_冒烟测试是什么?
  7. Intellij IDEA基本配置
  8. 小葵花妈妈课堂开课了:《ArrayList源码浅析》
  9. java 多余的空格_Java去除字符串多余空格以及首尾空格
  10. 高清和网络电视是数字电视的希望
  11. 面试必备:常用的设计模式总结
  12. 基于STM32F407的ADC解析-ADC1多通道扫描模式电压采集实验(启用DMA传输数据)
  13. RISCV toolchain编译工具链搭建
  14. 西门子S7-1200PLC堆栈程序 在使用西门子1200PLC时候发现,系统没有自带的堆栈功能块,不能实现数据的先进先出后进后出功能
  15. 自动化运维 -- 02 Ansible
  16. 语音处理/语音识别基础(三)- 声音的特征和声音的能量
  17. 在人一生的成长过程中,什么才是最重要的因素?
  18. 什么是css sprites?
  19. 让战略落地到运营的PMO实施经验分享——亚马逊全球新兴市场PMO负责人宋晓雪
  20. VMware安装Linux时显示没有网络解决方法(100%解决)

热门文章

  1. 【逻辑题】猜猜她的生日
  2. 实现AlphaGo(一):围棋的基本规则和代码设计思路
  3. 天正菜单栏不见了怎么显示出来_天正CAD中菜单栏不见了如何调出来?
  4. 为开发者而生 | 2021 SuperMap开发者大会议程全公布
  5. 拇指玩」制作的「谷歌安装器」app
  6. 回顾+纪念:离开帝都的第一年
  7. python中的scaler_使用时值错误scaler.inverse_变换在Python中
  8. 三星S5660刷机及Root
  9. Enterprise Architect 类关系对应解析
  10. 创新专题一:省份层面(创新效率、创新能力、投入产出、高质量发展等)