双令牌机制(chatgpt)

news2024/11/30 6:34:31

先记录下

双令牌机制主要用于增加Web应用程序的安全性。这种机制通常包括两种类型的令牌:访问令牌(Access Token)和刷新令牌(Refresh Token)。

1.访问令牌:访问令牌是用户完成身份验证后接收的令
牌,它包含了用户的身份信息和权限信息。访问令牌—般会有一个较短的过期时间,例如15分钟或1小时。

2.刷新令牌:当访问令牌过期后,用户可以使用刷新令
牌来获取新的访问令牌,而无需再次输入用户名和密码。刷新令牌—般会有一个较长的过期时间,例如24小时或7天。

实施双令牌机制的基本步骤如下:
1.用户身份验证:当用户通过用户名和密码登录时,服
务器会验证用户的身份。如果验证成功,服务器会生成访问令牌和刷新令牌,并将它们返回给客户端。
2.使用访问令牌:客户端收到令牌后,会将访问令牌存储在本地。然后,客户端在每次向服务器发送请求时,都会在请求头中携带访问令牌。
1.访问令牌过期:当访问令牌过期后,服务器会拒绝来
自客户端的请求,并返回一个特定的错误码,例如481(未授权)。
2.使用刷新令牌:当客户端收到401错误码时,它会使
用刷新令牌向服务器请求新的访问令牌。服务器会验证刷新令牌,如果验证成功,服务器会生成新的访问令牌和刷新令牌,并将它们返回给客户端。
1.刷新令牌过期:如果刷新令牌也过期了,客户端就需要重新进行身份验证。

双令牌机制的优点是,即使访问令牌被盗,攻击者也只能在短时间内使用,因为访问令牌很快就会过期。此外,即使刷新令牌也被盗,服务器也可以在用户下次使用刷新令牌时,发现有两个不同的客户端试图使用同一个刷新令牌,从而废除该刷新令牌

那访问令牌过期时,发送的那个请求,已经失败了,再拿刷新令牌获取新的访问令牌,怎样做到用户无感

当访问令牌过期,服务器通常会返回401 Unauthorized状态码。在这种情况下,可以在客户端设置一个拦截器来处理这个问题,使用户感知不到令牌的刷新过程。这样,每当客户端收到401状态码,它可以自动使用刷新令牌去获取新的访问令牌,然后再次尝试发送失败的请求。
以下是一个基本的处理流程:

  1. 客户端发送请求。
  2. 服务器检查访问令牌,发现它已经过期,然后返回401状态码。
  3. 客户端拦截器捕获到401错误,然后使用刷新令牌向服务器请求新的访问令牌。
  4. 如果刷新令牌有效,服务器返回新的访问令牌。
  5. 客户端拦截器接收到新的访问令牌,更新本地存储的访问令牌。
  6. 客户端拦截器重新发送原来失败的请求。
  7. 服务器接收到新的请求和新的访问令牌,然后处理请求。
    注意,这个过程需要处理并发请求的情况。如果有多个请求同时返回401错误,客户端应该只发送一次刷新令牌的请求,然后用获取到的新访问令牌重新发送所有失败的请求。

以上就是一个基本的处理过期访问令牌的流程,希望对你有所帮助。

现成的axios作为请求客户端,处理双令牌机制的源码实现

处理双令牌机制的Axios源码实现可以通过Axios的拦截器功能来实现。以下是一个基本的示例:
在这里插入图片描述
这段代码首先创建一个新的axios实例,并添加一个响应拦截器。当服务器返回401错误时,拦截器会检查是否正在刷新访问令牌。如果正在刷新,那么它会将请求添加到等待队列中,并返回一个Promise,该Promise将在新的访问令牌可用时解析。如果不在刷新,那么它会发送一个请求来刷新访问令牌,并将所有等待的请求添加到队列中。当新的访问令牌可用时,它会解析所有等待的Promise,并使用新的访问令牌重新发送原始请求。
注意:上述代码只是一个基本的示例,你可能需要根据你的应用程序的具体需求和服务器的API来进行修改。例如,你可能需要在其他地方存储和获取访问令牌和刷新令牌,或者你可能需要使用不同的方式来处理错误和队列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/523457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Three.js 模型体素化原理及实现

在本文中,我们探索了 3D 模型的体素化过程,重点是使用导入的 glTF 模型创建 3D 像素艺术。 本文包括一个最终演示,涵盖了可以使用体素化实现的各种 3D 效果。 我们将提供涵盖以下主题的分步指南: 确定 XYZ 坐标是否在 3D 网格内的…

SES2000浅地层剖面仪自带处理软件ISE2.95的处理步骤

SES2000是目前市面上主流浅地层剖面仪。它的自带处理软件ISE经常和设备一起更新,造成ISE版本众多,虽然数据采集的格式都是raw,但是低版本ISE软件打不开高版本raw数据,即使软件版本相近,比如都是2.95版本序列&#xff0…

AI测试|天猫精灵智能音箱测试策略与方法

一、业务介绍 2014年11月,亚马逊推出了一款全新概念的智能音箱:Echo,这款产品最大的亮点是将智能语音交互技术植入到传统音箱中,从而赋予了音箱人工智能的属性。这个被称为“Alexa”的语音助手可以像你的朋友一样与你交流&#x…

Grafana系列-统一展示-9-Jaeger数据源

系列文章 Grafana 系列文章 配置 Jaeger data source Grafana内置了对Jaeger的支持,它提供了开源的端到端分布式跟踪。本文解释了针对Jaeger数据源的配置和查询。 关键的配置如下: URL: Jaeger 实例的 URL, 如: http://localhost:16686 或 http://localhost:16…

PPT技能之新手入门,零基础光速进阶的宝藏

不会PPT只是借口,懒惰才是你的心里话。只要现在开始学习,不出三个月,华丽蜕变成PPT大神!你的进步,我的功劳! 你的关注,是我最大的动力!你的转发,我的10W!茫茫…

维京人的秘密:残暴背后的真相,敬畏神灵死后进入英灵殿

维京人,一个充满神秘色彩的名字,勾起了人们对于古代北欧残暴战士的想象。然而,维京人究竟是如何形成这样的形象,他们的传统和习俗又是如何塑造了他们的一生呢? 首先,我们要了解维京人的生活背景。维京人生活…

Linux线程同步(5)——互斥锁or自旋锁?

自旋锁概述 自旋锁与互斥锁很相似,从本质上说也是一把锁,在访问共享资源之前对自旋锁进行上锁,在访问完成后释放自旋锁(解锁);事实上,从实现方式上来说,互斥锁是基于自旋锁…

shell脚本之“sort“、“uniq“、“tr“、“cut“、“split“、“paste“以及“eval“命令详解

文章目录 sort命令uniq命令tr命令cut命令split命令paste命令eval命令总结 sort命令 以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序. 比较原则:从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. 语法…

Chrome和edge报STATUS_STACK_BUFFER_OVERRUN错误的处理办法

Chrome和edge突然就报STATUS_STACK_BUFFER_OVERRUN错误,原因未知。 解决方案: Chrome 卸载本地的chrome访问https://www.chromedownloads.net/chrome64win/(windows64)https://www.chromedownloads.net/chrome32win/&#xff0…

母亲节到了,写一个简单的C++代码给老妈送上一个爱心祝福

🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 C/C专栏 🌙请不要相信胜利就像山坡上的蒲公英一样唾…

快速上手Arthas

目录 基本概述 安装方式 基础指令 jvm相关指令 class/classloader相关指令 monitor/watch/trace相关指令 其他 基本概述 jconsole等工具都必须在服务端项目进程中配置相关的监控参数,然后工具通过远程连接到项目进程,获取相关的数据。这样就会带…

快速查询的秘籍——B+树索引

页和记录的关系示意图 InnoDB根据主键查找数据的过程是什么? 没有索引的查找是什么?索引查找和通过主键查找有什么关系? 索引是解决什么问题的? 索引是解决定位数据页的,而不是定位一个页中的数据的,定位…

MATLAB绘制动画(一)质点动画

vx 100*cos(1/3*pi); vy 100*sin(1/3*pi); t 0:0.005:18; x vx*t; y vy*-9.8*t.^2/2; comet(x,y) 这里只是截取了最后的画面,正常运行时,可以看到从最高点向下落的动作。 想要了解这段代码,我们要知道comet函数的意义 这个函数可以沿着…

ChatGPT 发布重磅更新,插件系统即将上线!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 昨天凌晨,ChatGPT 为诸多 Plus 会员陆续开放了插件系统内测权限,申请比较早的用户,现在应该都能体验上最新的插件系统了。 为了让风暴来得更为猛烈&…

SQL在线刷题

牛客网学习SQL在线编程,牛客网在线编程,一共82道 用于实践的网站,在线运行SQL 目前43道,刷不动了,剩下的之后找机会搞 只记录有疑问的题目 简单 SQL196 查倒数第三 查找入职员工时间排名倒数第三的员工所有信息 …

js堆和栈

目录 关键句提取: 一、认识堆和栈 1、内存操作场景 2、数据结构场景 二、堆和栈的优缺点 1.栈(stack) 2.堆(heap) 3.总结: 三、堆和栈的溢出 四、 传值和传址 五、为什么会有栈内存和堆内存之分? 垃圾回收 标记清理 引用…

品牌控价的好处有哪些、品牌控价方法有哪些

今天和大家聊聊【品牌控价】,他们常会说到自己的产品有多好,经销商们体验完也说产品效果非常不错,价格在业内也是有很大优势,但是客户购买量和预期效果确有很大差距,难道我产品性价比这个高,还不能打动顾客…

一种不需要注册没有魔法使用ChatGPT的方法

关于我:关注AIGC、读书、成长和自媒体。加我微信:keeepdance,备注:chatgpt。进ChatGPT交流群。 如果你还没有使用过ChatGPT,那你来对了地方。文章结尾,我将提供一种能不需要梯子、不需要注册,无…

【数据结构.C】顺序表和单链表的增删查改

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要…

干货! CVPR:基于VDB的高效神经辐射渲染场

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者介绍 严 涵 上海交通大学2019级人工智能专业本科生,研究兴趣主要是与NeRF相关的三维重建算法。 报告题目 基于VDB高效神经辐射渲染场 内容简介 01 NeRF NeRF的提出起初主要是为了解决新视⻆生成…