加密包
安装
npm install bcryptjs
使用,首先在定义Schema时加密
var userAddSchema = new mongoose.Schema({
name:{type:String,unique:true,required:true},
sex:{type:String,required:true},
username:{type:String,unique:true,required:true},
password:{type:String,required:true,set(val){return require("bcryptjs").hashSync(val,5)}},
email:{type:String,unique:true,required:true},
})
Schema里面,使用set方法,把传入的val,通过调用bcryptjs的hashSync加密,加密等级5
set(val){return require("bcryptjs").hashSync(val,5)}
其次,在登录的时候通过用户名,获取到数据库中保存的密码,和提交的密码进行比对
router.post('/login', async (ctx, next)=> {
let {admin,pass}=ctx.request.body; //结构出前端提交的用户名和密码
await userModel.findOne({username:admin})
.then(res=>{
if(res.username==admin && require("bcryptjs").compareSync(pass,res.password)){
//调用bcryptjs的compareSync方法,比较提交的密码和数据库查询结果密码,注意顺序
ctx.body={
code:200,
message:"登录成功!"
}
}else{
ctx.body={
code:201,
message:"账号或密码错误,请重试!"
}
}
})
})
网友评论