【架构-12】JWT和Token

news/2024/10/18 18:26:52/

Token_0">什么是Token?

Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

有效期多长合适呢?

为了解决在操作过程不能让用户感到Token失效这个问题,有一种方案是服务器端保存Token状态,用户每次操作都会自动刷新或推迟Token的过期时间——Session就是采用这种策略来保持用户登录状态的。然而仍然存在这样一个问题,在前后端分离、单页APP这些情况下,每秒钟可能发起多次请求,每次都去刷新过期时间会产生非常大的代价。如果Token的过期时间会产生非常大的代价。如果Token的过期时间被持久化到数据库或文件,代价就更大了。所以通常为了提升效率,减少消耗,会把Token的过期时间保存在缓存或内存中。
还有一种方案,使用RefreshToken,它可以避免频繁的读写操作。这种方案中,服务端不需要刷新Token的过期时间,一旦Token过期,就反馈给前端,前端使用Refresh Token申请一个全新的Token继续使用。这种方案中,服务端只需要在客户端请求更新Token的时候对Refresh Token的有效性进行一次检查,大大减少了更新有效期的操作,也就避免了频繁读写。当然Refresh Token也是有有效期的,但是这个有效期就可以长一点,比如以天为单位的时间。

JWT_9">什么是JWT

JWT(JSON Web Token)是一个开放的标准,它定义了一种紧凑且包含的方式,用JSON对象在各方之间安全地传输信息。此信息是经过数字签名的,可以验证和信任。
JWTToken的一种具体实现方式,其本质就是一个字符串,将用户信息存储到JSON中然后经过编码得到的字符串,用于web中数据的安全传输。
JWT由三部分组成,分别是Header(头部)、Payload(有效载荷)、Signature(签名),用点(.)将三部分隔开便是JWT的结构,形如xxxxx.yyyyyy.zzzzz的字符串。
在这里插入图片描述

  1. Header

JWT Header由两部分组成,是一个描述JWT元数据的JSON对象,alg属性表示签名使用的算法,默认为HAMC SHA256;typ属性表示Token的类型,统一写成JWT
在这里插入图片描述

  1. Payload
    Payload是JWT的主体部分,保存实体信息,每一个字段就是一个声明(claim),JWT为我们提供了一些默认字段。
    在这里插入图片描述

  2. Signature
    签名部分是对上面两部分数据签名,通过哈希算法,以确保数据不会被篡改。
    在这里插入图片描述

  3. 参考资料
    jwt.io/introduction


http://www.ppmy.cn/news/1428444.html

相关文章

【算法刷题day29】Leetcode:491. 非递减子序列、46. 全排列、47. 全排列 II

文章目录 Leetcode 491. 非递减子序列解题思路代码总结 Leetcode 46. 全排列解题思路代码总结 Leetcode 47. 全排列 II解题思路代码总结 草稿图网站 java的Deque Leetcode 491. 非递减子序列 题目:491. 非递减子序列 解析:代码随想录解析 解题思路 大题…

头歌实训作业答案c++

由于“头歌实训作业答案C”这个表述可能指的是某个特定课程或机构的C编程作业答案,通常这类作业答案不会公开分享,因为这涉及到版权和学术诚信的问题。但我可以提供一些C编程的通用指导和资源,帮助你完成实训作业。 ### C编程基础 1. **变量…

07-ESP timer

ESP32-S3 ESPTIMER 介绍 ESP Timer是ESP32-S3的一个强大功能,它允许创建软件定时器并在超时时调用它们的回调函数。这对于需要执行延迟或周期性操作的用户软件非常有用,例如延迟设备启动/停止或周期性采样传感器数据。 对于需要较好实时性能&#xff…

【Java】HashMap、HashTable和ConcurrentHashMap的区别

文章目录 区别一、HashMap1.1基本定义与特性1.2工作原理与实现1.3常用方法1.4性能与优化 二、HashTable三、ConcurrentHashMap3.1基本特点3.2实现原理3.3常用方法3.4适用场景3.5性能优化 HashTable、HashMap和ConcurrentHashMap之间的区别主要体现在线程安全、继承关系与实现接…

网络基础(二)——传输层

1、再谈端口号 端口号(Port)标识了一个主机上进行通信的不同的应用程序; 在TCP/IP协议中, 用 "源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识一个通信(可以通过 netstat -n查看); 1.1、端口号…

数字逻辑课程实验环境配置与使用说明

文章目录 I.虚拟机搭建1.1 Vmware安装1.2 Win XP安装1.3 xftp7安装 I. Quartus II安装II. 使用说明2.1 新建工程2.2 在工程中加入代码2.3 代码编译波形仿真 I.虚拟机搭建 1.1 Vmware安装 Vmware17安装教程 1.2 Win XP安装 Win XP安装教程 1.3 xftp7安装 给虚拟机添加FTP …

投入产出表的分析要点有哪些

投入产出分析是利用投入产出表、投入产出系数和投入产出模型,对国民经济各部门之间的技术经济联系和影响进行分析的一种经济数据分析方法。 一、什么是投入产出表 我国的投入产出表是描述国民经济中各种产品的来源与使用去向的棋盘式平衡表 , 是产品部门 产品部门…