NODE.JS - Как проверить хешированный пароль Laravel с помощью bcrypt? - PullRequest
0 голосов
/ 18 июня 2019

Я разрабатываю приложение Node.js, которое должно войти в систему, используя ту же информацию базы данных из приложения Laravel.

Я прочитал о BCrypt и пытался использовать его для сравнения сгенерированного хешированного пароля с Laravel, хранящимся в базе данных.

Итак, по документации BCrypt мне нужно сделать что-то подобное:

var salt = bcrypt.genSaltSync(saltRounds);
var hash = bcrypt.hashSync(myPlaintextPassword, salt);

Но я не знаю, как использовать ту же самую соль из Laravel для хеширования моего пароля. Мне нужно использовать APP_KEY , чтобы сделать это?

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Насколько я понимаю, соль хранится как часть хеша.

Так почему бы не сравнить простой текст с сохраненным хешем?

Попробуйте следующее (из документации bcrypt):

bcrypt.compare(myPlaintextPassword, hash, function(err, res) {
    // res == true
});

hash будет хэш-значением пароля пользователя в базе данных Laravel.

например:

var pass_hash = '$2y$12$Z3Dk1YAzNsdXxq8EKNQxluqGglI6dvncfJxDj0mZHh7zceX2XoX/W'
var pass_string = '1234'
bcrypt.compare(pass_string, pass_hash,(err,valid)=>{
 if(valid){console.log("valid password match")}
 else{console.log("wrong credentials")}
});
0 голосов
/ 26 июня 2019

Мне нравится ответ здесь .Это намного проще, чем я думал.

var hash = '$2y$08$9TTThrthZhTOcoHELRjuN.3mJd2iKYIeNlV/CYJUWWRnDfRRw6fD2';
var bcrypt = require('bcrypt');
hash = hash.replace(/^\$2y(.+)$/i, '$2a$1');
bcrypt.compare("secret", hash, function(err, res) {
    console.log(res);
});
...