Проблемы со входом в систему при использовании bcrypt на node.js - PullRequest
0 голосов
/ 07 июня 2019

люди, у которых есть проблемы с получением uname pwd для входа в систему, используя bcrypt на node.js ... Я новичок, вы знаете, извините, если этот вопрос не умный ... код ниже ... Я неПри получении любой ошибки, либо я ввел неправильный пароль, либо верный пароль, код возвращает строку "res.status (200) .send (" успешно logeed in "+ username" ....

app.post("/users/signin", function(req, res){
var {username, password} = req.body; //deconstructing again!!! 
    User.findOne({username: username}, "username password", function(err, userBody){
        if (!err){
            var pwdcheck = bcrypt.compare(userBody.password, password); //decrypt password
            console.log("password check: inserted pwd is " + userBody.password + " retreived is " + password);
            if (pwdcheck) {
                console.log("pwdcheck returns " + pwdcheck);
                req.session.user = {
                   username: userBody.username,
                   password: userBody.password
                };
                req.session.user.expires = new Date( //giving a session duration for the user
                    Date.now() + 24 * 3600 * 60 * 1000
               );
               res.status(200).send(" successfully logeed in " +username );        
           } else {
           res.status(401).send(" invalid credentials 1 " +username );
           }
    } else {
        res.status(401).send(" invalid credentials 2 " +username );
        }
});

});

1 Ответ

0 голосов
/ 07 июня 2019

Похоже, bcrypt.compare - это асинхронная функция.Когда вы присваиваете переменную, вы присваиваете не возвращаемое значение функции, а саму функцию.Поскольку функция не null, ваш оператор if, предназначенный для проверки возвращаемого значения, всегда будет иметь значение true.Попробуйте вместо этого использовать bcrypt.compareSync.

Кроме того, у вас может быть открытый текст и хешированные пароли в обратном порядке.Первым аргументом должен быть незашифрованный пароль из запроса, а вторым должен быть хешированный пароль из сохраненной пользовательской записи: bcrypt.compareSync(plaintext, hash).

https://www.npmjs.com/package/bcrypt

...