mongoose验证用户登录

通过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;

点击查看完整代码地址

你可能感兴趣的:(mongoose验证用户登录)