Token的应用场景

JWT

  • JWT由三部分组成:头部(Header)、有效载荷(Payload)和签名(Signature)
  • 头部通常指定了Token的类型和使用的哈希算法;有效载荷包含了一系列的声明,例如用户的ID、Token的发行者和过期时间;签名用于验证消息的完整性和确保Token没有被篡改
  • JWT通常用作访问Token,用户登录后会收到一个JWT,之后每次请求需要访问受保护的资源时都需要携带该JWT
  • 优点: 由于Token自包含(即包含了所有用户状态信息),这减少了服务器查数据库的需要
  • 缺点: 存储在客户端,如果Token被截获将会暴露所有用户信息

Token一旦被发出就无法在服务器端废除它(即除非过期,否则一直有效)

双token机制

  • 适用场景:用户登录权限
  • 用户首次成功登录后,服务端生成两个令牌:access_token 和 refresh_token。
    refresh_token 拥有比 access_token 更长的有效期,用于在 access_token 过期时进行刷新
  • 服务端将两个令牌返回给用户,用户将它们储存起来以便之后使用
  • 用户在之后的每个请求中将 access_token 放入请求的授权头(Authorization header),以便服务端验证用户的身份及有效性
  • 如果服务端检测到 access_token 已失效,它会返回相关的错误响应(如HTTP 401状态码)
  • App在接收到令牌失效的响应后,不会直接通知用户,而是自动使用储存的 refresh_token 向服务端发起请求,请求新的 access_token
  • 服务端接收 refresh_token,验证其有效性,然后生成新的 access_token(和可选的 refresh_token),并将它们返回给用户
    • 这一步骤中,服务端可能只返回新的 access_token,或同时返回新的 access_token 和 refresh_token,具体取决于安全策略和令牌的生命周期管理
  • 用户使用新的 access_token 继续他们的请求,而服务端继续验证新令牌的有效性

主从token机制

  • 适用场景:支付/转账场景
  • 当用户1首次请求支付订单时,服务端为该次交易生成一个唯一的主令牌(master_token)
  • 服务端将生成的master_token返回给用户1,用户1需要保存这个令牌以完成接下来的支付过程
  • 当用户2请求支付订单,且此时用户1的master_token已经过期时,服务端会生成一个新的master_token,已过期的master_token不会被立即废弃,而是作为备用令牌(backup_token)被存储起来
  • 服务端将新生成的master_token返回给用户2,用户2同样需要将此令牌保存以用于支付
  • 用户1使用其保存的(现在已过期的)master_token尝试进行支付,服务端检测到该令牌无效后,会尝试验证之前存储为backup_token的过期令牌,如果backup_token有效,服务端允许支付动作完成
  • 用户2使用其有效的master_token进行支付,服务端校验成功后允许支付动作完成
  • 当用户3请求支付订单时,与用户2被发放的master_token也已经过期,服务端重复前面的过程:生成新的master_token,且旧的master_token转变为backup_token

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

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

相关文章

76. 最小覆盖子串(困难)

76. 最小覆盖子串 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:76. 最小覆盖子串 2.详细题解 在s中寻找一个最短的子串,使之包含t中的所有字符,t中可能存在多个相同字符,寻找的子串也应至少含有…

格式化输出软件

一个给图片修改名字的小软件 功能: 输入文件名字,生成一个”当前时间文件名“的格式化内容到剪贴板方便改名 主界面有个复选框,勾选后会生成”文件名当前时间“的内容 演示: 输入无效字符时 代码: import sys from…

ctr/cvr预估之DeepFM模型

ctr/cvr预估之DeepFM模型 在数字营销的浪潮中,点击率(CTR)和转化率(CVR)预估已成为精准广告投放和个性化推荐系统的核心。随着深度学习技术的蓬勃发展,传统的机器学习方法,如逻辑回归和因子分解…

Websocket实现方式一

创建Websocket处理器继承AbstractWebSocketHandler 覆写public void afterConnectionEstablished(WebSocketSession session)方法,建立Websocket连接覆写protected void handleTextMessage(WebSocketSession session, TextMessage message)方法,处理接收…

【Python】Python异常处理及常见错误详解

Python是一种动态类型的高级编程语言,其简单易懂的语法和强大的功能使其成为当今最流行的编程语言之一。然而,在编写Python代码时,我们难免会遇到各种错误。理解和处理这些错误是每个Python开发者必备的技能。本文将深入探讨Python中的异常处…

会声会影2024破解版本激活码注册机免费安装包下载

今天我要来和大家安利一款让我彻底改变对视频创作认知的神器 —— 会声会影2024!✨🎉 会声会影全版本绿色安装包获取链接:(抓紧保存以防失效) https://pan.quark.cn/s/06e2f90a8526 会声会影最新一键安装包下载如下…

数据分析必备:12个“地表超强”数据可视化工具推荐!

数据可视化之所以流行,不仅是因为它简化了我们查看复杂数据的方式,更是因为数据可视化可以加快我们获取数据信息的速度。但对于初学者来说,使用数据可视化工具并不能快速启动。因此,本文专门为您列出了12个免费的数据可视化工具&a…

期货交易什么是锁仓,锁仓有什么利弊

锁仓是期货交易中的一种操作,指的是投资者在持有合约头寸的同时,通过建立相反的合约头寸来对冲风险,以保护自己的投资。锁仓可以通过买入或卖出相同数量的相同合约来实现,使投资者的净头寸为零。 此时无论行情上涨或者下跌&#…

互联网医院系统开发中的移动端应用设计

在现代医疗服务中,互联网医院系统逐渐成为提升患者体验和优化医疗资源的重要手段。而移动端应用作为互联网医院系统的关键组成部分,其设计和开发尤为重要。本文将从设计原则、技术架构和具体实现等方面探讨互联网医院系统中的移动端应用设计,…

Apple - View Programming Guide

本文翻译整理自:View Programming Guide(更新:2013-08-08 https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaViewsGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40002978-CH1-SW1 文章目录…

threejs tween补间动画(七)

1.引入依赖 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js//引入相机轨道控制器 import { GLTFLoader } from three/examples/jsm/loaders/GLTFLoader.js//引入GLTF模型加载器 import { DRACOLoader } from thre…

用本地电脑连接centos

要从本地计算机链接到CentOS服务器,通常可以使用SSH(Secure Shell)。以下是如何使用SSH命令从本地计算机连接到CentOS服务器的步骤: 打开终端(在Linux或Mac上)或者使用SSH客户端(在Windows上&a…

汽车零部件制造企业如何选择合适的ESOP电子作业指导书系统

随着汽车产业的不断发展,汽车零部件制造企业在提高生产效率和产品质量方面面临着越来越大的挑战。为了解决这些问题,越来越多的汽车零部件制造企业开始采用ESOP电子作业指导书系统,以帮助他们管理和优化生产流程。但是,在选择合适…

【ppt技巧】有哪些方法可以实现?PPT转换为图片!

将ppt文件转换为图片都有哪些方法可以实现?其实很简单,一起来看一下如何操作吧! 方法一: 使用格式转换器,有些文件格式转换器,支持ppt转换为图片。 方法二: 不需要转换器,直接在…

Pixel手机中文网-全球最大的华人Pixel手机论坛

Pixel手机中文网,使用Pixel手机华人的聚集地,快来加入这个大家庭分享和创作吧 😃 googlepixel.cn

Batch入门学习:从零开始掌握批处理脚本

目录 1. Batch脚本简介 1.1 什么是Batch脚本? 1.2 Batch脚本的历史 1.3 Batch脚本的应用场景 2. Batch脚本基本语法 2.1 注释 2.2 变量 2.3 常用命令 2.3.1 ECHO 2.3.2 PAUSE 2.3.3 CLS 2.3.4 GOTO 2.3.5 IF 2.3.6 FOR 2.4 参数传递 2.5 输入输出重定向 3. B…

STM32之三:中断外部中断

目录 1. 什么是中断 1.1 中断概念 1.2 中断优先级 1.3 中断嵌套 2.STM32中断 2.1 NVIC中断优先级 3 外部中断 3.1 EXTI简介 3.2 EXTI中断/事件线 3.3 EXTI功能框图 3.4 中断和事件的区别? 3.5 什么时候用外部中断? 3.怎么使用STM32中断 3.…

stm32F4库函数c++和C混合编程笔记20240626

1、有时候需要用到c的一些特性,封装,类等等。 2、研究一下如何更改之前c工程的内容,实现混合编程。 操作 1、keil设置 2、要重新建立一个main文件,后缀名是cpp,cpp才能调用cpp. 后面如果要用到c特性的,需要…

msvcr100.dll丢失的解决方法,学会这几种方法都能快速解决dll丢失

一、 msvcr100.dll丢失原因分析 系统文件损坏 系统文件损坏是导致msvcr100.dll丢失的常见原因之一。这种情况可能由多种因素引起,包括但不限于: 磁盘错误:磁盘的物理损坏或逻辑错误可能导致系统文件损坏。 病毒或恶意软件攻击&#xff1a…

【探索Linux】P.35(传输层 —— UDP协议)

阅读导航 引言一、UDP协议端格式二、UDP的特点三、UDP的缓冲区四、基于UDP的应用层协议温馨提示 引言 在上一篇文章中,我们深入探讨了网络协议的应用层,揭示了各种协议如何协同工作以确保信息在网络中正确、高效地传递。从HTTP到FTP,每一层协…