通过npm init -y新建一个项目
采用bcrypt进行密码加密
新建src目录,在目录下新建models目录,在models下面建立user.js
- 使用js严格模式
'use strict'
- 引入mongoose, bcrypt
var mongoose=require('mongoose');
var bcrypt=require('bcrypt');
- 新建用户schema
var UserSchema=new mongoose.Schema({
email:{
type:String,
unique:true,
required: true,
trim:true
},
name: {
type: String,
unique:true,
required: true,
trim: true
},
password: {
type: String,
required: true
}
});
- 验证用户登录
UserSchema.statics.authenticate=function(email,password,callback){
User.findOne({email:email})
.exec(function(error,user){
if(error){
return callback(error);
}else if(!user){
var err=new Error('用户不存在');
err.status=401;
return callback(err);
}
bcrypt.compare(password,user.password,function(error,result){
if(result===true){
return callback(null,user);
}else{
return callback();
}
})
});
}
- bcypt代码加密
UserSchema.pre('save',function(next){
var user=this;
bcrypt.hash(user.password,10,function(err,hash){
if(err){
return next(err);
}
user.password=hash;
next();
})
});
- 最后输出userschema
var User=mongoose.model('User',UserSchema);
module.exports=User;
<a href="https://github.com/jowang2016/react-express-webpack-mongo-bookwormsite/blob/master/src/models/user.js">点击查看完整代码地址</a>
网友评论