【架构-12】JWT和Token

devtools/2024/10/18 5:43:58/

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/devtools/7055.html

相关文章

Smart Link + Monitor Link 实现二层链路故障判断与主备自动切换

一、适用场景: 1、企业中有二层需要提高可靠性业务的主备链路;具备快速收敛性能,收敛速度可达到亚秒级,实现高效可靠。 2、运行的业务对可靠性有要求,对应的网络拓扑不适宜修改为三层链路,只能在原二层链路…

Dockerfile与docker-compose容器编排(Docker系列第3章,共3章)

温馨提示 不同的组件需要不同的docker配置(例如容器卷,端口,环境变量等),使用你懂得工具看hub.docker.com官方手册。不要死记硬背,因为这种东西不是天天要写,过段时间就忘了,很容易…

lua 光速入门

文章目录 安装注释字符串变量逻辑运算条件判断循环函数Table (表)常用全局函数模块化 首先明确 lua 和 js Python一样是动态解释性语言,需要解释器执行。并且不同于 Python 的强类型与 js 的弱类型,它有点居中,倾向于强类型。 安装 下载解释…

uniapp封装websocket以及心跳检测、重连

websocket 封装 在所需文件夹下建立websocketUtils.js文件,封装代码如下: class websocketUtils {constructor(openId, time) {this.url wss://**** //ws地址 拼接一下 此处用的是openIdthis.data nullthis.isOpenSocket false //避免重复连接this.…

搭建电商网站跨境电商独立站|网上商城接口/电商数据接口详情

电商运营中,数据分析这项工作越来越重要,许多品牌方也越来越热衷去做电商数据分析。不过,全面的数据该如何获取呢,此时,电商数据接口的重要性便凸显出来了。 监控范围广: 可监控的范围包含京东、天猫、淘…

【2024】深度学习配置环境常见报错,持续更新中....

No such file or directory: ‘:/usr/local/cuda-10.1:/usr/local/cuda-10.1/bin/nvcc‘: 确保CUDA正常后,直接运行以下代码: export CUDA_HOME/usr/local/cuda详细原因参照,安装mmcv-full时报错:Could not build wheels for mm…

黑客知识了解

ipc$ 利用139,445端口 弱口令:admin,123456,root 容易被破解 命令 内部命令(系统自带命令) dir,tree,notepad 外部命令(你自己下载的命令) python webshell 网页木马 SQL注入 sql 结构化查询语言 …

【ThinkPHP框架教程·Part-02】开发规范和目录结构

文章目录 一、开发规范1、目录和文件的规范2、函数和类、属性命名规范3、常量与配置的规范4、数据表和字段的规范 二、目录结构1、单应用模式目录结构图(默认)2、多应用模式目录结构图(自定义)3、仅允许public目录对外访问4、其他…