在node.js中使用​ JsonWebToken模块进行token加密

news2024/12/25 1:28:48

目录

一、token

1、什么是token

2、作用

二、Express中实现token的方法:

1、使用JWT模块:JsonWebToken

2、token验证的流程

3、Express中实现过程

​ (1)安装、导入JsonWebToken模块

​ (2)在登录接口中生成token并响应给客户端

 (3)在客户端将接收到的token保存到本地缓存

​ (4)当客户端再次访问(包括未登录的访问——非法访问)服务器,服务器端会对token进行验证

 (5)客户端每次向服务器发起请求时都必须携带token,否则视为非法用户

 


一、token

1、什么是token

​ ‘令牌’的意思,是一个字符串,在客户端第一次请求服务器时由服务器生成,然后响应给客户端(保存),当客户端再次请求服务器时,带上这个token,就不需要再带用户名和密码。

2、作用

​ (1)防止表单重复提交:

​ (2)进行身份验证:

​ a、为什么要进行身份认证:基于http协议的请求,无状态(当客户端与服务器之间的请求-响应过程完成后,客户端和服务器就断开了联系、服务器无法记录或跟踪客户端)。当客户端再次向服务器发起请求的时候,服务器需要对客户端的身份进行认证。

 b、传统的身份认证方式:

​ cookie:在服务器端生成,保存在客户端。

​ session:在服务器端生成,保存在服务器端

​ c、token认证:在服务器端不需要保存用户的身份信息,流程如下:

        ​ (a). 客户端使用用户名和密码请求登录。

​         (b). 服务端收到请求,验证用户名和密码。

​         (c). 验证成功后,服务端会生成一个token,然后把这个token发送给客户端。

        ​ (d). 客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地存储)里。

​         (e). 客户端每次向服务端发送请求的时候都需要带上服务端发给的token。

        (f). 服务端收到请求,然后去验证客户端请求里面带着token,如果验证成功,就向客户端

                返回请求的数据。

​ d、token的本质:

        是对用户的信息进行加密、解密,因此保存在客户端的token是加密后的一个字符串

二、Express中实现token的方法:

1、使用JWT模块:JsonWebToken

​ JWT的函数:

sign(加密的数据,加密的密钥,其他参数);返回值是一个加密后的字符串

verify(token,加密的密钥,[options]);验证token,返回值是一个对象,加密数据的信息,包括有效期

​ decode(token,加密的密钥);解密的方法。返回值是一个对象,加密数据的信息,包括有效期

2、token验证的流程

​ (1)第一次向服务器发起登录请求时,没有token信息

​ (2)当用户登录后,在服务器端生成token(token中包含哪些信息由用户决定),然后将token响应给客户端

​ (3)当客户端接收到服务器端响应的token后,将token存入本地的缓存中(如localStorage、cookie)

​ (4)当客户端再次访问服务器时,需要在请求头中包含token;服务器在接收到客户端的请求后,先查找客户端的请求头中是否有

​ token,若没有,则表明该用户是非法用户,就不响应任何数据;若有token,则表明该用户是合法用户,就响应数据

3、Express中实现过程

​ (1)安装、导入JsonWebToken模块

​ (2)在登录接口中生成token并响应给客户端

(3)在客户端将接收到的token保存到本地缓存

​ (4)当客户端再次访问(包括未登录的访问——非法访问)服务器,服务器端会对token进行验证

 (5)客户端每次向服务器发起请求时都必须携带token,否则视为非法用户

 

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

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

相关文章

stm32f767之PWM

仅作笔记,很多内容参考网友文章。 PWM 输出,是利用定时器的比较输出功能,所以就是配置定时器。 1,选择定时器8 tim1和tim8为高级定时器 一般我们选择内部时钟,也就是由APB 外设时钟提供。根据选择的输出IO口&#x…

手把手教你搭建视频去重系统

#01 背景 如今,短视频平台对各类搬运视频的检测力度和精确度越来越高了。无论是影视号的剪辑,还是从油管搬运,即使做了各类复杂的视频变换,都很容易被检测出来。作者都会收到提醒,严重的甚至被封号。 乔布斯演讲原始视…

您公司的财务流程是世界一流的还是二流的?

您公司的财务流程是世界一流的还是二流的? 组织开始意识到,提高财务和会计流程的有效性和效率不仅是财务部门内部的目标,而且对整个公司的战略目标也意义重大。首席财务官必须扪心自问——我们的财务流程是世界一流的还是二流的,…

Mac安装NDK android-ndk-r25b-darwin.dmg

文章目录废话连片教程片段1. 打开要存放的目录.2. 打开 .app 的包内容配置环境变量 MAC (在终端/cmd/命令行中运行)废话连片 最近在用 xx存图 下载 小蓝鸟、油管 视频, 一开始觉得挺好用的, 直到… 免费下载次数已用完. 就想着自己弄一个下载视频的小工具, 便查询到了 python …

基于JavaWeb的宿舍管理系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

网页设计期末课程大作业:基于HTML+CSS+JavaScript+Bootstrap制作响应式网站信息技术交流博客(7页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

gradle的访问目录和支付宝的注意事项

经过我100多次的测试发现。gradle项目不管是打包 还是不打包。他的访问目录都是 config.class.getResourceAsStream("config.properties") 当前class所在的目录, 而支付宝的sdk。他的访问文件的目录是项目的根目录。 比如 你的项目文件是这个样子。运…

QT-自定义本地翻译模块,简单实用

QT-自定义本地翻译模块,简单实用前言一、演示效果二、核心模块1.本地xml的操作过程2、翻译模块三、程序链接前言 QT的国际语言每次如果有字符串变动,都需要重新再编译一下,真的是顶不住,说实话,用起来真的是不习惯。 …

DataX-Web 源码调试及打包

文章目录1、还原 dataxweb 数据库2、修改配置文件3、打包前文回顾: 《DataX 及 DataX-Web 安装使用详解》 《DataX 源码调试及打包》 源码地址:https://github.com/WeiYe-Jing/datax-web 1、还原 dataxweb 数据库 sql 脚本在目录 /bin/db/datax-web.sq…

Keycloak之17.0.1 版本与Jenkins安装与集成-yellowcong

jekins和keycloak的认证,是依赖于 Keycloak Authentication Plugin 插件,进行认证处理,这个配置还是相对比较简单的,最坑的一点就是如果配置错误了,如何恢复的问题。 keycloak 应用集成 Keycloak之安装与启动-yellowcong Keycloak之功能介绍与简单使用-yellowcong Keyc…

BW取月底月初日期函数

BW取月底内置的函数与SAP有差异,为 SN_LAST_DAY_OF_MONTH,如下 很简单的逻辑,主要通过2月的日期进行判断为平年还是闰年,其他月末日期固定 取月底函数: call function SN_LAST_DAY_OF_MONTH EXPORTING DAY_IN …

如何下载不同格式的卫星地图

如何下载不同格式的卫星地图 发布时间:2018-01-17 版权: 务名称:下载任务的名称,可重命名 经纬度范围当前下载区域所在的经纬度范围,不可更改 保存路径:下载你选择区域的文件保存的地方,可更…

基于jsp+mysql+ssm在线培训教育平台-计算机毕业设计

项目介绍 本在线培训教育课程平台系统主要包括系统用户管理模块、课程类别管理模块、课程信息管理、站内新闻管理、登录模块、和退出模块等多个模块。它帮助在线教育平台实现了信息化、网络化,通过测试,实现了系统设计目标,系统采用了jsp的mvc框架,SSM(…

Allegro如何检查过孔类型是否使用正确操作指导

Allegro如何检查过孔类型是否使用正确操作指导 Allegro可以检查PCB上过孔类型是否使用正确,让使用错误的过孔以DRC的形式报出来,具体操作如下 选择setup-Constraint-modes 出现Analysis mode的窗口,选择Physical Modes,Vialist DRC选择on开关,并且保证On-line DRC是勾选…

【数据结构】堆的实现(向上、下调整比较,复杂度,堆排序,Top-K问题)

文章目录一、堆的实现1、堆的概念2、堆的性质3、堆的实现堆的创建(向上、下调整比较)堆排序Top-K(读取文件当中的数据)一、堆的实现 1、堆的概念 如果有一个关键码的集合K {k0,k1, k2,…&…

餐饮行业的成本率与毛利率

1、成本率与毛利率 成本率是指成本量与营业额(销售额)之间的比率,表示实现一定量的销售额需要多少比例的成本资源消耗。 成本率越低,表示企业实现单位业绩付出的资源代价越小,释放出的收益空间越大;相反&a…

docker安装nginx以及(nginxWebUI和nginx-gui图形化界面的使用)

一、docker安装nginx 1、拉取镜像 docker pull nginx2、创建挂载目录 mkdir -vp /usr/local/docker/nginx cd /usr/local/docker/nginx #创建用户挂在的目录 mkdir -vp logs html conf3、启动镜像 1、方式一(推荐) 1、启动 docker run -d --name nginx -p 80:80 nginx2、…

vue实现企业微信扫码登录后台管理系统

大致流程 在登录页面构建内嵌式登录二维码(这种方式好处:无需跳转到企业微信域下登录后再返回,提升企业微信登录的流畅性与成功率)扫二维码之后,微信那边会跳转到redirect_uri你重定向的地址,后面会拼接co…

医疗器械网络安全漏洞自评报告模板

提示:编制医疗器械网络安全漏洞自评报告要点解析 文章目录1. 目的2. 引用文件3. CVSS漏洞等级3.1 概述3.1.1 适用范围说明3.1.2 CNNVD-ID定义3.1.3 编码原则3.1.4 CNNVD-ID语法介绍3.2 指标分析3.2.1 基本指标3.2.1.1可用性指标1)攻击向量2)攻击复杂性3)所需权限4)用…

二、基础平滑、面积折线图与折线堆叠、面积堆叠《手把手教你 ECharts 数据可视化详解》

注:本系列教程需要对应 JavaScript 、html、css 基础,否则将会导致阅读时困难,本教程将会从 ECharts 的官方示例出发,详解每一个示例实现,从中学习 ECharts 。 ECharts 官方示例:https://echarts.apache.o…