JWT(JSON Web Token)

embedded/2024/9/22 21:18:33/

JWT

JWT全称JSON Web Token(JSON Web令牌)

通过JSON形式作为Web应用令牌,用于在各方之间将信息作为JSON对象传输,在数据传输中完成数据加密,签名等相关处理。

作用:

  • 授权:用户登录后,后续的请求将包括JWT令牌。从而允许用户访问该令牌允许的路由,服务和资源。开销较小,并且可以跨域使用。
  • 信息交换:在各方之间安全地传输信息。JWT可进行签名(如使用公钥/私钥对),因此可确保发件人。由于签名是使用标头和有效负载计算的,因此还可验证内容是否被篡改。

认证流程:

  • 前端通过Web表单将用户名和密码发送到后端接口(一般是POST请求)
  • 后端核对用户名和密码成功后,将用户id等其他信息作为JWT Pauload(负载),将其与头部分别进行Base64编码拼接签名,形成一个Token。
  • 后端将JWT字符串作为登录成功后的结果返回前端前端将其保存在本地缓存,或者session缓存上,退出登录时删除缓存。
  • 前端每次请求时将JWT放入HTTP中Header
  • 后端检查是否存在,(验证JWT的有效性,检查签名是否存在,检查Token是否过期,验证Token的接收方式是否是自己)
  • 验证通过后可以进行操作,否则返回错误信息。

db06970be100500333a4e153256aeb81

优点:

  • 轻量简介:可以放在URL,POST参数或者请求头中,数据量小,传输速度快。
  • 自包含:包含了用户需要的信息,减少数据库的查询。
  • 以JSON形式保存在客户端中,任何web形式都支持。

结构:一个字符串,三部分组成,中间用. 隔开

  • 标头
  • 有效负载
  • 签名

Header(标头):有令牌的类型和使用的签名算法。

Payload(负载) :有效负载,包含声明;声明是有关实体(通常是用户)和其他数据的声明,不放用户敏感的信息因为使用Base64编码(可逆的)

Signature (签名):将编码后的标头和负载,加上我们提供的密钥,使用header中的签名算法进行签名(保证JWT没有被篡改)

们提供的密钥,使用header中的签名算法进行签名(保证JWT没有被篡改)


http://www.ppmy.cn/embedded/112254.html

相关文章

vue3.0 使用echarts与echarts-gl 实现3D饼图

效果 安装echarts npm install echarts npm install echarts-gl 3d饼图组件&#xff1a; <template><div style"width: 100%; height: 100%" ref"echart"></div> </template><script setup> import { reactive, ref, onMou…

集成与扩展:将Python办公自动化脚本集成到更大的工作流中

目录 一、引言 二、Python在办公自动化中的基础应用 2.1 数据处理与Excel操作 2.2 报告生成 三、Python与数据库的集成 3.1 连接到数据库 3.2 执行SQL查询 四、Python与Web服务的集成 4.1 使用Flask开发Web服务 五、Python与其他应用程序的集成 5.1 命令行调用 5.2…

windows通过wsl2安装linux系统之Ubuntu,傻瓜式安装

期望通过每一次分享&#xff0c;让技术的门槛变低&#xff0c;落地更容易。 —— around 目录 1.基础环境和要求2.安装wsl23.安装linux系统4.迁移linux系统挂载5.配置linux账号密码6.配置ssh登录方式待续… 前言 为什么要在windows上安装linux&#xff0c;这个问题当你是研发…

Blender怎么给物体添加遮罩

Blender中&#xff0c;你可以在雕刻模式下给物体添加遮罩&#xff0c;以保护某些部分不被修改或雕刻。以下是如何在Blender中添加遮罩的步骤&#xff1a; 1. 进入雕刻模式 首先&#xff0c;选择你的模型&#xff0c;然后按 Tab 键进入 雕刻模式。 2. 选择遮罩工具 在雕刻模…

docker-01 创建一个自己的镜像并运行容器

docker-01 创建一个自己的镜像并运行容器 前言 我们都知道使用Docker的镜像可以快速创建和部署应用&#xff0c;大大的节约了部署的时间。并且Docker 的镜像提供了除内核外完整的运行时环境&#xff0c;确保代码的环境一致性&#xff0c;从而不会在出现这段代码在我机器上没问…

MySQL——数据库的高级操作(二)用户管理(5)如何解决 root 用户密码丢失

大家都知道 root 用户是超级管理员&#xff0c;具有很多的权限&#xff0c;因此该用户的密码一旦丢失就会造成很大的麻烦&#xff0c;针对这种情况&#xff0c;MySQL提供了对应的处理机制&#xff0c;可以通过特殊方法登录到 MySQL 服务器&#xff0c;然后重新为 root 用户设置…

【YashanDB知识库】YAS-02025 no free space in virtual memory pool

本文转自YashanDB官网&#xff0c;具体内容请见YAS-02025 no free space in virtual memory pool 【标题】YAS-02025 no free space in virtual memory pool 【问题分类】业务SQL执行 【关键字】YAS-02025 【问题描述】在崖山环境查询数据提示报错 YAS-02025 no free space…

低代码门户技术:构建灵活、高效的企业门户解决方案

正文&#xff1a; 在当今快节奏的商业环境中&#xff0c;企业门户网站已经成为连接内部员工、外部客户以及合作伙伴的关键平台。为了应对日益增长的业务需求和技术挑战&#xff0c;低代码门户技术应运而生&#xff0c;它提供了一种更加灵活、高效的方式来构建和管理企业门户。…