我创建了一个名为encrypt.js
的节点库文件。
其中包括使用bcrypt-nodejs
创建的一些函数var bcrypt = require('bcrypt-nodejs');
exports.cryptPassword = function(password, callback) {
bcrypt.genSalt(10, function(err, salt) {
if (err) return callback(err);
else {
bcrypt.hash(password, salt, function(err, hash) {
return callback(err, hash);
});
}
});
};
exports.comparePassword = function(password, userPassword, callback) {
bcrypt.compare(password, userPassword, function(err, isPasswordMatch) {
if (err) return callback(err);
else return callback(null, isPasswordMatch);
});
};
当我现在使用cryptPassword
文件中的server.js
时,它会显示来自bcrypt-nodejs
库的错误,说明“no callback function was given
”
我在通话中添加了一个功能,如下所示
var encryptedPassword = encrypt.cryptPassword(req.body.user.password, function (err, salt){
if(err) {throw err};
console.log('hlllll');
});
有人可以帮忙吗?
答案 0 :(得分:13)
语法:bcrypt.hash(data, salt, progress, cb)
你必须有两个回调。
记录在这里:
https://npmjs.org/package/bcrypt-nodejs
更新
您可以使用包bcrypt
代替bcrypt-nodejs
您的代码将起作用:
bcrypt.hash(password, salt, function(err, hash) {
return callback(err, hash);
});
答案 1 :(得分:1)
你可以实际使用bcyrpt-nodejs,如果那是你喜欢的,但你必须编辑bCrypt.js中的以下部分
if(!callback) {
throw "No callback function was given."
}
并将其替换为
if(typeof callback == 'undefined') {
callback = progress;
progress = null;
}
然后在你的代码中,只有这个;
require('bcrypt').hash(values.password,null,null,function passwordEncrypted(err,password){
答案 2 :(得分:0)
使用bcyrpt.compareSync而不是bcypt.compare。它不需要回调