mongoose验证用户登录

2016-12-04  本文已影响419人  kate2020

通过npm init -y新建一个项目

采用bcrypt进行密码加密

新建src目录,在目录下新建models目录,在models下面建立user.js

'use strict'
var mongoose=require('mongoose');
var bcrypt=require('bcrypt');
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();
                }
            })
        });
}
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();
    })
});
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>

上一篇下一篇

猜你喜欢

热点阅读