gpt4 book ai didi

javascript - 无法获取哈希密码以使用 bcrypt 保存

转载 作者:行者123 更新时间:2023-12-03 07:44:43 26 4
gpt4 key购买 nike

我正在尝试使用sequelize、bcrypt 和express 保存哈希密码。哈希确实生成,但看起来数据库条目发生在哈希值生成之前。我是 NodeJS 新手,所以我对此还不太了解。

用户.js

var bcrypt = require('bcrypt');

module.exports = function(sequelize, DataType){

var User = sequelize.define('User', {
name: DataType.STRING,
localPassword: DataType.STRING,
lastName: DataType.STRING,
localEmail: DataType.STRING,
cellNumber: DataType.INTEGER
},
{
instanceMethods: {
validPassword: function(password){
return bcrypt.compareSync(password, this.password);
}
},
classMethods: {
generateHash: function (password) {
return bcrypt.hash(password, 8, function(err, hash){
if(err){
console.log('error'+err)
}else{
return hash;
}
});
}
}
}

);

return User;
};

路线/index.js

router.post('/register', function(req, res){
var name = req.body.name;
var lastName = req.body.lastName;
var email = req.body.email;
var cellNumber = req.body.cellNumber;
var password = model.User.generateHash(req.body.password);
model.User.build({name: name, lastName: lastName, localEmail: email, cellNumber: cellNumber, localPassword: password}).save();

});

除散列密码外,所有值都保留在数据库中。任何帮助将不胜感激。

最佳答案

这里的问题是您使用的是异步bcrypt.hash,并且model.User.build在bcrypt对密码进行哈希处理之前执行。这里有几个选项,您可以使用同步 bcrypt.hashSync; 或执行 model.User.build 调用作为 promise

model.User.generateHash(req.body.password).then(function(data){
...
})

您可以使用bcrypt-then为此。

npm install bcrypt-then

关于javascript - 无法获取哈希密码以使用 bcrypt 保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35258248/

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