【封装】token的使用与密码加密操作
token封装
引入 jsonwebtoken
模块
let jwt = require("jsonwebtoken")
封装生成签名与校验签名的方法
module.exports = {
//生成签名
sign:({username,_id})=>{
return jwt.sign({username,_id},"NZ1906",{expiresIn:60*60*24})
},
//校验签名
verify:token=>{
return new Promise((resolve,reject)=>{
jwt.verify(token,"NZ1906",(err,decode)=>{
if(!err){
resolve(decode) //decode={username,_id}
}else{
reject(err.message)
}
})
})
}
}
以上代码可以封装为jwt.js
文件
加密封装
引入bcrypt模块
let bcrypt = require("bcrypt")
封装加密与解密方法
module.exports = {
//加密 const hash = bcrypt.hashSync(用户未加密的密码, salt);
hashSync:password=>{
return bcrypt.hashSync(password,10)
},
//解密校验 bcrypt.compareSync(用户未加密的密码, 用户加密之后的hash密码);
compareSync:(password,hash)=>bcrypt.compareSync(password,hash)
}
以上代码可以封装为bcrypt.js
文件
注意:在使用的时候可能会遇到安装不上的问题,这里可以选择安装 bcryptjs 模块,
bcryptjs是一个第三方密码加密库,是对原有bcrypt的优化,优点是不需要安装任何依赖
在纯JavaScript中优化了 bcrypt,兼容 bcrypt ,也就是说,与上面的用法一致