我正在尝试存储哈希密码并检查它是否有效。
var bcrypt = require('bcrypt');
let data = "";
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash("my password", salt, function(err, hash) {
// Store hash in your password DB.
console.log(hash);
data = hash;
});
});
bcrypt.compare("my password", data, function(err, res) {
// res === true
console.log(res)
});
返回值始终为false。?
但如果我在genSalt函数中移动比较,则返回true。
由于
答案 0 :(得分:0)
您正在处理node.js中的异步函数,因此需要此结果。为了更清楚地了解问题,请在console.log
之前尝试bcrypt.compare
数据。我当然可以说它等于初始值""
。
然后尝试在.hash
回调
var bcrypt = require('bcrypt');
let data = "";
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash("my password", salt, function(err, hash) {
// Store hash in your password DB.
console.log(hash);
data = hash;
console.log(data); // Here data equals to your hash
bcrypt.compare("my password", data, function(err, res) {
// res === true
console.log(res)
});
});
});
console.log('data') // Here data equals to initial value of ""
您可以使用async / await函数使其看起来像同步代码并摆脱回调。幸运的是,bcrypt
async/await
支持承诺接口
const salt = await bcrypt.genSalt(10);
const hash = await bcrypt.hash("my password", salt);
const result = await bcrypt.compare("my password", data);
console.log(result);