简体   繁体   English

无法使用猫鼬在mongodb中插入哈希(bcrypt)密码

[英]Cant insert hashed(bcrypt) password in mongodb using mongoose

this is my user schema 这是我的用户架构

 let mongoose = require('mongoose');
mongoose.set('debug', true);

//user schema
const UserSchema = mongoose.Schema({
    name:{
        type:String,
        required:true
    },
    email:{
        type:String,
        required:true
    } ,
    username:{
        type:String,
        required:true
    },
     password:{
        type:String,
        required:true
    }
});

const User = mongoose.model('User',UserSchema);
module.exports = User;

and this is the user route file where am trying to insert a new user 这是试图插入新用户的用户路由文件

if(errors){
            res.render('register',{
                errors:errors
            })
        }else{
            bcrypt.genSalt(10,(err,salt)=>{
                bcrypt.hash(password,salt,(err,hash)=>{
                    if(err){
                        console.log("hash did not work");
                    }

                        newUser.password = hash;
                        console.log(newUser.password);


                });
            })
            than()
            var newUser =  new User({
                name:name,
                email:email,
                username:username,
                password:password
            }); 


            console.log(newUser);
                newUser.save((err)=>{
                if(err){
                    console.log(err)
                    return;
                }else{
                    req.flash('success','your now registered and can login');
                    res.redirect('./login');
                }

            });
        }

i tried also assining it dirctly to the new user than save 我也尝试将它直接保存给新用户而不是保存

  newUser.password = hash;

the password is getting hashed when i console log it but it doesnt store as hash value in the new user for example example from db 我在控制台登录时密码被散列,但是在新用户中它不存储为散列值, 例如来自db的示例

You should move newUser.save into bcrypt.hash 您应该将newUser.save移至bcrypt.hash

if(errors){
    res.render('register',{
        errors:errors
    })
}else{
    bcrypt.genSalt(10,(err,salt)=>{
        bcrypt.hash(password,salt,(err,hash)=>{
            if(err){
                console.log("hash did not work");
            }

            var newUser =  new User({
                name: name,
                email: email,
                username: username,
                password: hash
            }); 

            console.log(newUser);
            newUser.save((err)=>{
                if(err){
                    console.log(err)
                    return;
                }else{
                    req.flash('success','your now registered and can login');
                    res.redirect('./login');
                }

            });

        });
    });
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM