加签是为了生成用户注册时的私有密钥token,解签是为了维护用户登陆状态判断是否传递的用户,密码是否匹配。
后端实现token的加签解签其实是两个封装好的函数再调用的过程
先引入jsonwebtoken
const jwt = require('jsonwebtoken')
同时为了确保加签和解签的过程加密还需一个步骤,加盐。
保存在超级管理员的本地目录下的.env文件在我们git上传文件时不会上传到服务器上,所以利用私有的表示加盐确保加密过程的保密性。
require('dotenv').config({path:'../../.env'})
以下是加签过程
//加签=>token
const sign = async({username,email})=>{
return new Promise((resolve,reject)=>{
jwt.sign ({
username,
email
},process.env.JWD_SECRET,(err,token)=>{
if(err){
return reject(err)
}
resolve(token)
})
})
}
以下是解签过程
//解签=》验证
const decode = async(token)=>{
return new Promise((resolve,reject)=>{
jwt.verify(token,process.env.JWD_SECRET,(err,decoded)=>{
if(err){
return reject(err)
}
resolve(decoded)
})
})
}
测试结果
const test = async()=>{
const data = {
username:'admin',
email:'admin@qq.com'
}
const {username,email} = data
const token = await sign({username,email})
console.log('token is :',token );
const decoded = await decode(token)
console.log('decoded :',decoded);
}
test()
输出正确
![](https://img-blog.csdnimg.cn/img_convert/9bfd0b00ca3f96c08068cc72acd9b602.png)