nodejs配合jwt
使用npm下载包:
npm i jsonwebtoken --save
引入此包:
const jsonwebtoken =require('jsonwebtoken');
JWT的组成:
JWT由三部分组成,每一部分使用“.”进行分割
这三部分分别是:Header 包括{
'jyp':'JWT', //表示token类型
'alg':'hs256' //表示算法名称,因为加密需要设计算法,所以需要规定算法
} jsonwebtoken会对这个头信息进行base64加密,就成为了JWT字符串的第一部分
payload部分:
{
'':'',
'':'',
'':''
}
signature部分:此部分对前两部分进行拼接,然后对拼接结果再次进行加密
var encodeString=base64UrlEncode(header)+'.'+base64Urlcode(payload);
var signature=HMACSHA256(encodedString,'secret')
前两个部分主要是用来保护用户信息的安全性
用户的信息主要是放在了payload部分了
jwt的使用方式:
客户端收到服务器返回的jwt之后,通常会将它储存在localStoreage或者sessionStoreage中
此后客户端每次与服务器通信。都要带上jwt的字符串,从而进行身份验证。
也就是说再vue项目中需要使用到axios的拦截器,将一些以固定路径开头的请求再请求头上面加上一个加密过的token验证
定义一个密钥: 也就是一个变量,随便是什么都可以 const a= ”dashauige“
jwt.sign()方法,此方法包含三个参数,三个参数分别为:用户信息对象,加密密钥,配置对象
配置对象这里有一个属性为expiresIn,用来规定token过期的时间
例:token:jwt.sign({name:"shuaige"},miyao,{expiresIn:"30s"})
一般此方法是后端接收到请求之后用这个方法来生成一个jwt字符串返回给前端
jwt.verify(两个参数)两个参数分别表示:
第一个参数表示:刚才后端返回过来的经过加密的token字符串
第二个参数表示:刚才返回字段的密钥,用来解析刚才的那个token字符串
再nodejs中联合起来一般就是:
const jsonwebtoken =require("jsonwebtoken");
const pasing ="pasing";
const JWT={
// 此方法用于生成一个token字段
generate(value,exprires){
return jsonwebtoken.sign(value,pasing,{expiresIn:exprires})
},
// 此方法用于解析token字段
verify(token){
try{
return jsonwebtoken.verify(token,pasing)
}catch(e){
return false
}
}
}
// 创建一个token返回给前端
const token = JWT.generate({name:'pasing'},"10s");
// 拿到前端发送过来的token然后进行校验,如果校验通过那么就能够实现跳转
console.log(JWT.verify(token));
setTimeout(()=>{
console.log(JWT.verify(token));
},11000)
module.exports=JWT
nodejs配合jwt的更多相关文章
- 全栈项目|小书架|服务器开发-NodeJS 使用 JWT 实现登录认证
通过这篇 全栈项目|小书架|服务器开发-JWT 详解 文章我们对JWT有了深入的了解,那么接下来介绍JWT如何在项目中使用. 安装 $ npm install jsonwebtoken 生成 Toke ...
- 利用Nodejs快速构建应用原型
利用Nodejs快速构建应用原型 开发一个应用往往需要快速的构建原型,然后在此基础上设计和改进,前端可能立马能看到效果,但是后端业务逻辑不会那么快,这个时候其实我们需要额只是一些模拟数据,所以不需要真 ...
- nodejs项目文件搭建环境
nodeJS,作为一门较为“新鲜的”的原因,近年来普遍受到一些前端想转为全栈的ITer青睐,在想用nodeJS配合数据库开发出一个小玩意的路上,萌新们第一步便要遇到就是环境的支持.node作为Java ...
- 基于webpack和vue.js搭建开发环境
前言 在对着产品高举中指怒发心中之愤后,真正能够解决问题的是自身上的改变,有句话说的好:你虽然改变不了全世界,但是你有机会改变你自己.秉承着“不听老人言,吃亏在眼前”的优良作风,我还是决定玩火自焚. ...
- webpack + vuejs 基本配置(一)
开始之前 本文包含以下技术,文中尽量给与详细的描述,并且附上参考链接,读者可以深入学习: 1.webpack2.Vue.js3.npm4.nodejs —- 这个就不给连接了,因为上面的连接都是在你实 ...
- webpack + vue
开始之前 本文包含以下技术,文中尽量给与详细的描述,并且附上参考链接,读者可以深入学习: 1.webpack2.Vue.js3.npm4.ES6语法 前言 在对着产品高举中指怒发心中之愤后,真正能够解 ...
- webpack + vuejs(都是1.0的版本) 基本配置(一)
开始之前 本文包含以下技术,文中尽量给与详细的描述,并且附上参考链接,读者可以深入学习: 1.webpack12.Vue.js13.npm4.nodejs —- 这个就不给连接了,因为上面的连接都是在 ...
- 服务器端渲染VS浏览器端渲染
1)浏览器渲染和服务器渲染区别:何为渲染?如果我们只是想显示一堆不变的数据,那么我们直接写一个a.html丢到服务器上让客户端访问就可以了.但这是基本不可能的事情,数据一般是变化的.你不可能为每套数据 ...
- freess(未测试)
freess 使用 nodejs 配合 shadowsocks-windows 实现FQ (windows) 使用方法: 如果你没有安装nodejs请先安装,访问 https://nodejs.org ...
- 【微信小程序】安装DingoApi开发小程序api
1.安装 composer require dingo/api 2.发布配置: php artisan vendor:publish 选择DingoApi发布. 3.向.env文件添加配置 (1)项目 ...
随机推荐
- STM32F4寄存器初始化:PWM输出
static void TIM4_Init(void) //普通定时函数 { TIM4->ARR=1000-1; //设定计数器自动重装值 TIM4->PSC=168-1; //20000 ...
- C++_关键字explicit
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数 ...
- STM32F4库函数初始化系列:串口DMA接收
1 u8 _data1[4]; 2 void Configuration(void) 3 { 4 USART_InitTypeDef USART_InitStructure; 5 DMA_InitTy ...
- 如何在Ubuntu 20.04上安装和保护phpMyAdmin
转载csdn:cukw6666 https://blog.csdn.net/cukw6666/article/details/107985170
- vue基础——命名路由
路由配置,是vue使用的基础中的基础,采用传统的方式会有些麻烦且不清晰,而命名路由的方式,无论path多长多繁琐,都能直接通过name就匹配到了,十分方便,所以,强烈推荐使用命名路由的方式 传统的方式 ...
- Linux:grep 查找文件内容
在 Windows 中打开文件用查找功能可以查找我们想要的字符,前提是要打开文件.Linux 有一个指令不用打开文件就可以查询字符,而且支持正则表达式-- grep 指令.不仅如此,grep 还支持在 ...
- docker下netcore内存dump
一般开发阶段可以通过visualstudio来检查程序的内存 .cup等的优化问题.vs下调试=>性能探查器,这里面大有千秋. 但是好多内存问题是经过时间积累下来才暴露出来的,在生产环境中不做不 ...
- 提升IIS权限
如何去修改IIS的权限 在IIS中当前网站高级设置中查看-应用程序池-修改标识-标识代表权限 可以通过调整应用程序池权限来维持后门. 安装IIS.支持.aspx脚本.是为了用木马查看权限. 上面的 ...
- vue 项目引入 jquery
一.引入 jquery 1. 方式一 默认会安装最新版本 jquery npm install jquery 2. 方式二 指定版本 npm install jquery@3.6.0 3. 方式三 在 ...
- 关于pytest生成测试报告
之前用pytest集成allure,记录的很清楚确实很好,但是我不知道怎么把生成的所有结果通过邮箱发送 可以使用pytest-html生成的html是这样的 也很清楚 但是!!!!!!!!!!!!!! ...