2015-09-16 4 views
-1

Я пытаюсь внедрить программу обеспечения безопасности для проверки паролей. Функция easyPbkdf2 работает отлично, но мне нужно вернуть логическое значение , действительное. Маленькая помощь, пожалуйста, у меня проблемы с объемом. Спасибо заранее.Возвращаемое значение из функции обратного вызова.

userSchema.methods.verifyPassword = function(password) { 
    easyPbkdf2 = new EasyPbkdf2(options); 
    easyPbkdf2.verify(this.password_salt, this.password_hash, password, function(err, valid) { 
     console.log(valid); 
}); 
return valid; // This doesn't work...[ReferenceError: valid is not defined] 
} 
+0

Поместите свой 'return valid' сразу после' console.log (valid) '. – Arjun

+1

Ваше 'возвращение' находится вне вашей функции. – Ozan

+1

Пытается вернуть значение с помощью асинхронного метода? Возникла проблема с объемом. – epascarello

ответ

0

EasyPbkdf2.verify() является асинхронным. Возврат значения не будет работать. Вам нужно передать функцию обратного вызова, чтобы вернуть значение. Что-то вроде этого:

userSchema.methods.verifyPassword = function(password, callback) { 
    var easyPbkdf2 = new EasyPbkdf2(options); 
    easyPbkdf2.verify(this.password_salt, this.password_hash, password, callback); 
}; 


// how to call it 
userSchema.methods.verifyPassword(password, function(err, valid) { 
    if (err) { 
     // do something such as throwing error 
    } 
    console.log(valid); 
}); 
+0

Спасибо @Ben, это решило мою проблему. Я использовал только один обратный вызов. Теперь я вижу, что нужны два обратных вызова. :-) – DSoles79

0

Действительный в настоящее время назначается внутри easypbkdf2 функции, но вы возвращаете значение oitside функции, следовательно, оно не определено. Вероятно, вам нужно вернуть действительное значение внутри функции, в которой вы утешитесь, чтобы увидеть действительную. Дайте мне знать, если это сработает для вас

+0

Я пробую это, но тогда первая функция не вернула значение методу verifyPassword. Функция, которая должна вернуть значение true/false, является первой. – DSoles79

Смежные вопросы