美文网首页
mongoose验证用户登录

mongoose验证用户登录

作者: kate2020 | 来源:发表于2016-12-04 18:36 被阅读419次

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

    相关文章

      网友评论

          本文标题:mongoose验证用户登录

          本文链接:https://www.haomeiwen.com/subject/fvihmttx.html