如果你是使用window平台的话 直接安装 bcrypt 是会报错的 得安装其他的一些依赖
当然 我们也可以选择 hi用bcryptjs 替代 反正功能都是一样的
先安装
npm i node-gyp --save
不安装上面的的 会报错的 然后在安装
npm i bcryptjs --save
加盐加密 有俩种使用方法 一种是 同步加密 一种是异步加密
我这里使用的是 koa+mongodb的组合方式
const mongoose=require('mongoose');
const Schema=mongoose.Schema;
const bcrypt=require('bcryptjs');
// 定义集合中每一个字段的规则
const userSchema=new Schema({
userId:Schema.Types.ObjectId,
userName:{unique:true,type:String},// 设置用户名唯一的
password:String,
createDate:{type:Date,default:Date.now()}
})
// 每次往数据库中保存数据之前
userSchema.pre('save',function (next){ // 使用mongodbd的童鞋 注意 这里不要用箭头函数 否则this指向的就是 不是当前对象
// 同步的加密方式
// 生成salt的迭代次数
const saltRounds=10;
// 随机生成salt
const salt=bcrypt.genSaltSync(saltRounds);
// 获取hash值
// var hash=bcrypt.hashSync(this.password,salt);
// 将生成hash值赋值给密码
this.password=hash; //加密之后的数字赋值给用户提交的密码
next();
// 异步加密方式
bcrypt.genSalt(10,(err,salt)=>{
console.log(salt);
if(err) return next(err);
bcrypt.hash(this.password,salt,(err,hash)=>{
console.log(err,hash)
if(err) return next(err);
this.password=hash;
next();
});
});
})