我试图检查我的sqlite数据库中的sha256哈希是否与用户发送到我的NodeJS服务器的密码的sha256哈希相匹配。 Auth()函数应该返回true或false。如何访问变量" refpw"在if语句中?
function Auth(username, password){
db.get("SELECT passwordsha256 FROM users WHERE username=?", username, (err, row) => {
var refpw = row.passwordsha256
})
if(sha256(password) === refpw){return true}else{return false}
}

答案 0 :(得分:1)
您要做的是将异步方法更改为同步方法。
我建议将回调函数传递给您的Auth方法,然后在调用Auth方法的地方传递回调函数。
function Auth(username, password, callback){
db.get("SELECT passwordsha256 FROM users WHERE username=?", username, (err, row) => {
var refpw = row.passwordsha256;
callback(sha256(password) === refpw);
})
}
然后像这样打电话给Auth
Auth(username, password, (success) => {
if (success) {
//do something here
}
});