gpt4 book ai didi

node.js - Nodejs、bcrypt、 Mongoose

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:40 24 4
gpt4 key购买 nike

我对 Nodejs/Mongo(与 Mongoose)非常陌生。我正在使用 bcrypt 模块对 HTML 表单中的密码进行哈希处理。在我的 db.create 函数中,我无法将变量 storehash 存储在 mongodb 中。

我没有收到任何错误,但它在数据库中只是空白。我已经交叉检查了代码的每一行,它似乎有效。我不明白为什么我不能将变量存储为“password: storehash”,而允许存储类似“password: 'test'”的内容

我确信我在某个地方犯了一些菜鸟错误。如果有任何帮助,我将不胜感激!

var db = require('../models/users.js');
var bcrypt = require('bcryptjs');


module.exports.createuser = function(req,res){

var pass = req.body.password;
var storehash;

//passsord hashing
bcrypt.genSalt(10, function(err,salt){
if (err){
return console.log('error in hashing the password');
}
bcrypt.hash(pass, salt, function(err,hash){
if (err){
return console.log('error in hashing #2');
} else {

console.log('hash of the password is ' + hash);
console.log(pass);
storehash = hash;
console.log(storehash);
}
});

});

db.create({

email: req.body.email,
username: req.body.username,
password: storehash,


}, function(err, User){
if (err){
console.log('error in creating user with authentication');
} else {
console.log('user created with authentication');
console.log(User);
}
}); //db.create


};// createuser function

最佳答案

您的db.create应该位于console.log(storehash);的正下方,而不是在bcrypt.salt之后。

当您将其放在 bcrypt.salt 之后时,您要做的是:在为密码生成 salt 并对加盐密码进行哈希处理时,您还使用 db.create 在数据库中存储内容。它们是同时执行的,而不是顺序执行的。这就是为什么在对密码进行哈希处理时,您还使用 db.create 创建一个没有密码的用户。

换句话说,应该是:

bcrypt.genSalt(10, function(err,salt){
if (err){
return console.log('error in hashing the password');
}
bcrypt.hash(pass, salt, function(err,hash){
if (err){
return console.log('error in hashing #2');
} else {

console.log('hash of the password is ' + hash);
console.log(pass);
storehash = hash;
console.log(storehash);
db.create({

email: req.body.email,
username: req.body.username,
password: storehash,


}, function(err, User){
if (err){
console.log('error in creating user with authentication');
} else {
console.log('user created with authentication');
console.log(User);
}
}); //db.create
}
});

});

关于node.js - Nodejs、bcrypt、 Mongoose ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44655510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com