【SSO单点登录】JWT续签问题 && OAuth2.0 中的refreshToken刷新机制

2023-10-27

本篇速览

  • JWT续签问题
    • 快过期时返回新的token

    • refreshToken

      • 如何判断refreshToken的有效性

      • 扩展 -- OAuth2.0 中的refreshToken刷新机制

    • 其他需要刷新token的情况

      • 用户修改了角色权限
      • 删除了某个身份角色

为什么需要续签

如果给JWT设定了一个有效时间的话,时间到JWT是会过期的。但假如这个时候用户正在提交重要信息,填了一大堆信息,按下按钮时,后台拦截器发现token过期,告知前端,前端直接退回登录页,那这次提交就相当于无效了,还得登录后重新填一遍【当然前端也能做缓存,这里就不考虑那么多了,只是个栗子】

而原始JWT设计下,是没有考虑续签问题的。所以续签(即延长JWT的过期时间)工作需要我们自己来做。

快过期了返回新的token

类似于 Session 认证中的做法: 假设服务端给的 token 有效期设置为30分钟,服务端每次进行校验时,如果发现 token 的有效期马上快过期了, 服务端就重新生成 token 给客户端。

客户端每次请求都检查新旧token,如果不一致,则更新客户端存储的token。

  • 这种做法的问题是仅仅在快过期的时候请求才会更新 token ,对客户端不是很友好。

refreshToken刷新机制

流程图

用户登录返回两个 token :第一个是 acessToken ,它的过期时间比较短,比如是1天;另外一个是 refreshToken 它的过期时间更长一点,可以是accessToken的2倍:2天。

客户端登录后,将 accessToken和refreshToken 保存在客户端本地,每次访问将 accessToken 传给服务端。服务端校验 accessToken 的有效性,

如果过期的话,就将 refreshToken 传给服务端。如果 refreshToken 有效,服务端就生成新的 accessToken 给客户端。否则,客户端就重新登录即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SSO单点登录】JWT续签问题 && OAuth2.0 中的refreshToken刷新机制 的相关文章

  • 有没有办法在 java 桌面应用程序上体验 Windows 8 Metro 的外观和感觉?

    正如标题中所述 我真的很难找到这个问题的好答案 我目前正在开发一个仅桌面应用程序 根本没有 CSS 或任何互联网部分 我希望它看起来像 Windows 8 的 Metro 外观 我不是在谈论布局 而是在谈论外观和感觉 我特别喜欢方形而不是圆
  • 为什么 JavaFX API 不包含在 Java 8 J2SE 中? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有谁知道为什么 JavaFX 8 仍然不是即将推出的 Java 8 中的日常 J2SE API 显示所有 Java 组件的技术图清楚地将 Jav
  • Java - 红、绿、蓝获取RGB

    通过致电getRGB int x int y with a BufferedImage对象 得到一个负数 如何将三个不同的值 红色 绿色和蓝色 转换为这个单个负数 使用颜色类 new Color r g b getRGB
  • 使用 Eclipse 将具有外部依赖项的 Java 项目导出到 jar

    有没有一种简单的方法可以将 Java 项目 包括其所有外部依赖项 导出到标准 jar 文件 我开发了一个使用多个 Apache 库的 SDK 我希望能够将该项目作为单个 jar 发布 到目前为止我找到的这个问题的答案要求将项目打包为 Run
  • Android CursorAdapter、ListView 和后台线程

    我一直在开发的这个应用程序有包含数兆字节数据的数据库可供筛选 许多活动只是列表视图 通过数据库中的各个级别的数据下降 直到到达 文档 即从数据库中提取并显示在手机上的 HTML 我遇到的问题是 其中一些活动需要能够通过捕获击键并重新运行带有
  • Java HashMap 嵌套泛型与通配符

    我正在尝试创建包含自定义类的不同子类的哈希集的哈希映射值的哈希映射 如下所示 HashMap
  • Java:无安全管理器:RMI 类加载器已禁用

    您好 我有 RMI 应用程序 现在我尝试从客户端调用服务器上的一些方法 我有以下代码 public static void main final String args try Setting the security manager Sy
  • Java时间转正常格式

    我有 Java 时间1380822000000 我想转换为我可以阅读的内容 import java util Date object Ws1 val a new Date 1380822000000 toString 导致异常 warnin
  • 外部实体更改后索引不更新

    我目前正在开发一个项目 使用 JPA 2 1 保存数据并使用 hibernate search 4 5 0 final 搜索实体 映射类和索引后 搜索工作正常 但是 当我更改值时描述B 类从 someStr 到 anotherStr 数据库
  • 如何修复maven错误JAVA_HOME环境变量未正确定义

    当我在虚拟环境中检查maven的版本时 出现以下错误 The JAVA HOME environment variable is not defined correctly This environment variable is need
  • 如何从 Java 中“double”类型的值中删除小数值

    我正在调用一个名为 calculateStampDuty 的方法 它将返回 财产需缴纳的印花税金额 百分比计算有效 很好 并返回正确的值 15000 0 但是 我想显示该值 前端用户只是 15000 所以只想删除小数点和任何前面的值 此后
  • 欧拉项目 45

    我还不是一名熟练的程序员 但我认为这是一个有趣的问题 我想我应该尝试一下 三角形 五边形 六边形 数字由以下生成 公式 三角形 T n n n 1 2 1 3 6 10 15 五边形 P n n 3n 1 2 1 5 12 22 35 六角
  • Hazelcast:连接到远程集群

    我们有一组 Hazelcast 节点 全部运行在一个远程系统 具有许多节点的单个物理系统 上 我们希望从外部客户端连接到该集群 一个 Java 应用程序 它使用如下代码连接到 Hazelcast ClientConfig clientCon
  • 如何将测试类打包到jar中而不运行它们?

    我正在努力将我的测试类包含到 jar 包中 但不运行它们 经过一番谷歌搜索后 我尝试过mvn package DskipTests 但我的测试类根本没有添加到 jar 中 有任何想法吗 如果您遵循 Maven 约定 那么您的测试类位于src
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 单元测试、集成测试还是设计中的问题?

    我编写了我的第一个单元测试 我认为它过于依赖其他模块 我不确定是否是因为 这是一个复杂的测试 我实际上已经编写了集成测试或 我的设计有问题 我首先要说的是 虽然我有大约 4 年的开发经验 但我从未学过 也没有人教过自动化测试 我刚刚使用 H
  • java中的第三个布尔状态是什么?

    虽然我知道根据定义 布尔值仅包含两种状态 真或假 我想知道布尔值在用这些状态之一初始化之前有什么值 它默认为 false http java sun com docs books tutorial java nutsandbolts dat
  • 如何在 Java 中创建一个带有连字符的值的静态枚举?

    如何创建如下所示的静态枚举 static enum Test employee id employeeCode 截至目前 我遇到了错误 这对于 Java 来说是不可能的 因为每个项目都必须是有效的标识符 并且有效的 Java 标识符可能不包
  • 测量 tomcat 的排队请求数

    因此 使用tomcat 您可以设置acceptCount值 默认为100 这意味着当所有工作线程都忙时 新连接被放置在队列中 直到队列满 之后它们被拒绝 我想要的是监视此队列中项目的大小 但无法确定是否有办法通过 JMX 获取此值 即不是队
  • 使用 Commons 或 Guava 将文本文件转换为 Java Set

    我想将文件中的每一行加载到 HashSet 集合中 有没有一种简单的方法可以做到这一点 怎么样 Sets newHashSet Files readLines file charSet 使用番石榴 参考 文件 readLines http

随机推荐

  • Three.js创建文字初体验

    效果 首先引入必要组件 import build three js import libs js controls OrbitControls js import FontLoader from libs jsm loaders FontL
  • 蓝桥杯基础练习所有VIP习题解析代码

    阶乘计算 资源限制 时间限制 1 0s 内存限制 512 0MB 问题描述 输入一个正整数n 输出n 的值 其中n 123 n 算法描述 n 可能很大 而计算机能表示的整数范围有限 需要使用高精度计算的方法 使用一个数组A来表示一个大整数a
  • Mysql 乱码问题--如何查看和修改Mysql 的字符集

    MySQL会出现中文乱码的原因不外乎下列几点 1 server本身设定问题 例如还停留在latin1 2 table的语系设定问题 包含character与collation 3 客户端程式 例如php 的连线语系设定问题 强烈建议使用ut
  • Linux下安装openldap

    Linux下安装openldap 1 安装Berkeley DB 4 7 25 伯克利大学嵌入式数据库方案 openldap用它作为存储方案 root instance 0pk09gjj ldap wget http download or
  • DAC芯片CBM128S085

    一 硬件介绍 1 1 芯片内部框架图 1 2 CBM12S085引脚定义 引脚介绍 DAC SYNC 电平触发控制输入 低电平有效 SCLK 时钟输入 DAC DIN 串行数据输入 VOUTA H则是对应的8个电压模拟输出通道 二 软件实现
  • 找出数组中每个数的右边第一个比它大的数

    vector
  • 人工智能 猴子摘香蕉问题

    1 定义描述环境状态的谓词 AT x w x在w处 个体域 x monkey w a b c box HOLD x t x手中拿着t 个体域 t box banana EMPTY x x手中是空的 ON t y t在y处 个体域 y b c
  • 三角形

    1 2 3 4 5 6
  • function 与 => 的区别

    function 与 的区别主要是他们的作用域的不同 在JS中 箭头函数并不是简单的function 匿名函数的简写语法糖 实际上 箭头函数和匿名函数有个明显的区别 gt 箭头函数内部的this是词法作用域 在编写函数时就已经确定了 fun
  • CentOS8.4安装Redis6.2.6

    一 下载 官网 Redis 我们下载 Stable 稳定版 cd mydata wget https download redis io releases redis 6 2 6 tar gz 二 安装redis6 2 6 1 安装到 us
  • python编一函数s(x) 求级数和_Python 编程基础之高阶函数篇(一)

    高阶函数 能接受函数作为参数的函数 如 f abs def add x y f return f x f y 如果我们用 add 5 9 f 来调用该高阶函数 则返回结果为 14 abs是Python提供的求绝对值的函数 Python中的m
  • Django实现音乐网站 ⒅

    使用Python Django框架做一个音乐网站 本篇主要为歌单列表 歌单详情及推荐页 歌单内容改动 目录 歌单列表 设置路由 视图处理 模板渲染 歌单 单曲列表 设置路由 视图处理 模板渲染 推荐页 歌单列表 模板渲染修改 总结 歌单列表
  • C语言字节数

    bool 1字节 char 1字节 short 2字节 string 4字节 int 4字节 指针4字节 float 4字节 double 8字节 long 4或8字节 long long 8字节 long double 12字节 空类1字
  • ArcFace loss与其他改进loss对比

    ArcFace loss与其他改进loss对比 sphereFace A softmax cos ma 角度距离 cosFace AM softmax cosa m 余弦距离 ArcFace Arc softmax cos a m 角度距离
  • ICCV, ECCV, CVPR,IEEE的关系

    计算机视觉领域世界三大顶级会议分别为CVPR ICCV和ECCV CVPR CVPR 英文全称IEEE Conference on Computer Vision and Pattern Recognition 中文全称是国际计算机视觉与模
  • FeignClient中name和url属性的作用

    定义 feign是声明式的web service客户端 它让微服务之间的调用变得更简单了 类似controller调用service Spring Cloud集成了Ribbon和Eureka 可在使用Feign时提供负载均衡的http客户端
  • node-ffi ffi.Library往电脑窗口的任意光标处输入内容(user32.dll)window电脑

    node ffi ffi Library往电脑窗口的任意光标处输入内容 user32 dll window电脑 类似键盘输入法的效果 前提 遇到问题 解决问题了 补充安装库遇到的问题 类似键盘输入法的效果 我node项目和electron项
  • 语义分割评价指标mIOU的计算

    语义分割评价指标mIOU的计算 注意事项 这是针对重构了的语义分割网络 而不是之前的那个 所以不要询问原来的网络计算miou要怎么做 因为整个文件构架差距过大 建议使用新构架 学习前言 算一下语义分割的miou 做好生态链 什么是mIOU
  • 北大青鸟汉字注释机内码_北大青鸟消防主机如何编写汉字注释?

    北大青鸟消防主机汉字注释有两种 一种是利用编程调试软件进行编写文字注释 另一种是直接在消防主机上对照汉字机内码 进入系统进行编辑 下面小编跟大家介绍的是使用编程调试软件进行文字注释的方法 1 序号 项 序号 项自动生成 不需用户自己填写 2
  • 【SSO单点登录】JWT续签问题 && OAuth2.0 中的refreshToken刷新机制

    本篇速览 JWT续签问题 快过期时返回新的token refreshToken 如何判断refreshToken的有效性 扩展 OAuth2 0 中的refreshToken刷新机制 其他需要刷新token的情况 用户修改了角色权限 删除了