JWT 认证机制

news2024/7/4 6:25:14

Session 认证机制需要配合 Cookie 才能实现。由于 Cookie 默认不支持跨域访问,所以,当涉及到前端跨域请求后端按口的时候,需要做很多额外的配置,才能实现跨域 Session 认证。

JWT (英文全称: JSON Web Token)是目前最流行的跨域认证解决方案

jwt工作原理
在这里插入图片描述
总结:用户的信息通过 Token 字符串的形式,保存在客户端浏览器中。服务器通过还原 Token 字符串的形式来认证用户的身份。

JWT的组成部分:
JWT 通常由三部分组成,分别是 Header (头部)、Payload (有效荷载)、Signature (签名)三者之间使用英文的“.”分隔,格式如下:
在这里插入图片描述
在这里插入图片描述

JWT的使用方式

客户端收到服务器返回的JWT 之后,通常会将它储存在 localStorage 或 sessionStorage 中。此后,客户端每次与服务器通信,都要带上这个JWT 的字符串,从而进行身份认证。推荐的做法是把JWT 放在 HTTP
请求头的 Authorization 字段中,格式如下:
在这里插入图片描述

在express中使用JWT

1.安装JWT 相关的包

运行如下命令,安装如下两个JWT 相关的包:

npm install jsonwebtoken express-jwt
  • jsonwebtoken 用于生成JWT 字符串
  • express-jwt 用于将JWT 字符串解析还原成 JSON 对象

2.导入JWT 相关的包

使用 require( )函数,分别导入JWT 相关的两个包

// 导入包
// 1、导入用于将用户信息生成jwt字符串的包
const jwt = require('jsonwebtoken');
// 2、导入用于将客户端发送过来的jwt字符串,解析还原成json用户信息对象的包
const expressJWT = require('express-jwt');

3.定义 secret 密钥

为了保证JWT 字符串的安全性,防止JWT 字符串在网络传输过程中被别人破解,我们需要专门定义一个用于加密和解密的 secret 密钥:

  • 当生成JWT 字符串的时候,需要使用secret 密钥对用户的信息进行加密, 最终得到加密好的JWT 字符串
  • 当把JWT字符串解析还原成JSON 对象的时候,需要使用 secret 密钥进行解密

secret 密钥的本质: 就是一个字符串
在这里插入图片描述

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

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

相关文章

LeetCode算法小抄--二叉搜索树

LeetCode算法小抄--二叉搜索树二叉搜索树(BST)寻找第 K 小的元素[230. 二叉搜索树中第K小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/)二叉搜索树的转化[538. 把二叉搜索树转换为累加树](https://leetcode.cn/problems/convert-bst-to-greater-tree/…

AI提效工具|借助chatgpt快速读论文,快速总结、归纳、索引相似文章

目前新论文层出不穷,“快速阅读论文”成为研究者们一个必备能力。本文简单记录了近期出现的两个借助chatgpt来帮助我们快速读论文的“神器”,帮助大家快速上手应用,迅速提升论文阅读速度。 此外,本人也会定期更新记录一些类似的“…

酷开科技携手蓝凌数字化OA,释放数字生产力

疫情虽已落幕,但协同办公理念却逐步升级,伴随企业进入到以数字办公为基础的新周期。以提升管理效率为目的的协同办公在人工智能、大数据等技术的加持下,快速步入赋能办公、提升办公效率的自律型协作模式。 数字化时代,时间、空间…

涨点技巧:IOU篇---Yolov8引入WIoU,SIoU,EIoU,α-IoU,不同数据集验证能涨点

1.IOU介绍 IoU其实是Intersection over Union的简称,也叫‘交并比’。IoU在目标检测以及语义分割中,都有着至关重要的作用。 首先,我们先来了解一下IoU的定义: 我们可以把IoU的值定为为两个图形面积的交集和并集的比值,如下图所示: 1.1 Yolov8自带IOU方法 GIoU, DIoU,…

[测试猿课堂]接口自动化软件测试Requests模块从0到精通 一篇搞定

Requests模块是Python中一个非常流行的第三方库,用于处理HTTP请求。在接口自动化测试中,Requests模块可用于模拟发送HTTP请求并检查响应数据,以验证API的功能和性能。以下是与Requests模块相关的一些知识点,这些知识点都是从事接口…

【Python_Scrapy学习笔记(七)】基于Scrapy框架实现数据持久化

基于 Scrapy框架实现数据持久化 前言 本文中介绍 如何基于 Scrapy 框架实现数据持久化,包括 Scrapy 数据持久化到 MySQL 数据库、MangoDB数据库和本地 csv 文件、json 文件。 正文 1、Scrapy数据持久化到MySQL数据库 在 settings.py 中定义 MySQL 相关变量 # 定…

cuda-gdb 基础使用指南

cuda-gdb 基础使用指南 本文的cuda-gdb的简单入门指导,主要的参考是官方文档.但是原文是英文,又找了腾讯家的文档翻译机器,可惜水平着实一般.如果在使用过程中有更细的要求,可以看文档,本文最后贴出原文的目录,可以自己按图索骥,看看有没有其他的需求. 入门要求 …

GDOUCTF2023 Reverse题解

文章目录题目附件Check_Your_LuckTEA基本逻辑:show函数setKey函数encode函数(tea算法):judge函数解题脚本doublegamesnakefun迷宫关键循环题目附件 链接:https://pan.baidu.com/s/1W0GisS4R-rHYHK4Bu167_g?pwdnw4c Check_Your_Luck 可以看到五条方程,根据方程可…

Flutter开发日常练习-小猫咪杂货店

贴三张效果图 1.欢迎页面 2.商品展示列表 3.购物车页面 因为数据是本地的所以创建本地数据 final List _shopItems [["ZaoShui.", "25.00", "assets/8b10de68e58cfef6bd5f22e5321537.jpg", Colors.green],["ZaoQi.", "25.0…

Unity --- 枪类与子弹类的设计初探 与 Physics Material

1.类的设计方法 --- 首先将不同的对象相同的行为和方法做到一个类A中,然后再给每个对象各创建一个类,并且都继承大类A,同时在自己的类中创建自己独有的方法或者属性 1.一般子弹的射击都是用射线检测的方式去做的 --- 用碰撞器会出现我们不想要…

STM32-高级定时器输出比较模式实验

比较输出功能:定时器通过对预设的比较值与定时器特定寄存器的值做比较之后,并依据相应的输出模式从而实现各类输出,如PWM输出、电平翻转、单脉冲模式等。一般来说,STM32的通用定时器和高级定时器都具有比较输出功能,不…

使用putty在云服务器上安装jdk

在云服务器上安装jdk的步骤: 1. 登录到云服务器,打开putty终端,并使用root账户登录。 2. 在终端中输入以下命令,更新软件包列表: sudo apt-get update 3. 安装OpenJDK 8,请在终端中输入以下命令&#…

leetcode-1041. 困于环中的机器人

leetcode-1041. 困于环中的机器人1. 算法题目2 . 实现思路3. 参考代码1. 算法题目 题目如下: 在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意: 北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的…

Level_2(2)题目整理

文章目录L2-022 重排链表(模拟❗)L2-023 图着色问题L2-024 部落(并查集)L2-025 分而治之(与 L2-023差不多,邻接表遍历)L2-026 小字辈(求树的深度)L2-027 名人堂与代金券(💡处理&…

统信 UOS 20 初体验

统信 UOS 20 初体验1、下载UOS 202、安装UOS 202.1、发行版选择debian 10 64位2.2、选择Graphic2.3、语言中文2.4、开始安装2.5、安装完后重启2.6、登录UOS 206、使用UOS6.1、包管理器1、下载UOS 20 下载的是服务器免费授权版 https://www.chinauos.com/resource/download-ser…

[Java]面向对象高级篇

文章目录包装类包装类层次结构基本类型包装类特殊包装类数组一维数组多维数组可变长参数字符串String类StringBuilder类内部类成员内部类静态内部类局部内部类匿名内部类Lambda表达式方法引用异常机制自定义异常抛出异常异常的处理常用工具类数学工具类随机数数组工具类包装类 …

【AIGC】Visual ChatGPT 视觉模型深度解析

欢迎关注【youcans的AGI学习笔记】原创作品 【AIGC】Visual ChatGPT 视觉模型深度解析1. 【Visual- ChatGPT】火热来袭2. 【Visual-GPT】操作实例2.1 处理流程2.2 操作实例3. 【Visual-GPT】技术原理分析3.1 技术原理3.2 系统架构3.3 模块说明3.4 Prompt Manager 功能与规则3.5…

Distilling Knowledge via Knowledge Review(引言翻译)

翻译得可能不太准确,希望有能力的各位批评指正! Introduction 第一段 深度卷积神经网络(CNN)在计算机视觉多数任务中取得了显著的成功。 然而,卷积网络的成功往往伴随着相当大的计算和内存消耗, 使得将…

人工智能交互系统界面设计(Tkinter界面设计)

文章目录前言一、项目介绍二、项目准备三、项目实施1.导入相关库文件2.人脸信息验证功能3.语音交互与TCP数据通信4.数据信息可视化四、相关附件前言 在现代信息化时代,图形化用户界面(Graphical User Interface, GUI)已经成为各种软件应用和…

SpringBoot——Scheduled定时任务

目录 1.静态定时任务 2.动态定时任务 在一些业务场景中,我们需要定义一些任务在我们指定的时间或是每隔一个时间段就自动执行,来作为任务的前提,保证业务的执行。比如:我们需要一个定时任务,每天早上6点执行&#xf…