使用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
标签:const,nodejs,jwt,JWT,配合,token,jsonwebtoken,pasing From: https://www.cnblogs.com/yourgrandfather/p/17161756.html