我正在使用bcryptjs包来散列和比较密码。
下面使用的方法compareSync
是同步的并返回一个布尔值。它可靠且按预期工作。
let trueOrFalse = bcrypt.compareSync('abcd', '1234');
if(trueOrFalse) {
console.log('hooray, it was true');
} else {
console.log('oops, it was false');
}
Run Code Online (Sandbox Code Playgroud)
下一个示例使用异步compare
方法。我担心,因为这个版本是异步的,如果服务器上有任何延迟,它可能会在确定 的值if/else
之前到达语句。这是一个合理的担忧还是我误解了这种类型的异步函数的本质?bcrypt.compare
res
let trueOrFalse;
bcrypt.compare('abcd', '1234', function(err, res) {
trueOrFalse = res;
}
if(trueOrFalse) {
console.log('hooray, it was true');
} else {
console.log('oops, it was false');
}
Run Code Online (Sandbox Code Playgroud)