Хэши одной и той же строки не соответствуют функции изменения пароля - PullRequest
0 голосов
/ 29 апреля 2020

Я занимаюсь разработкой веб-приложения на основе NodeJS, ReactJS, в котором я хочу дать пользователю возможность сменить свои пароли. Вот код для маршрута:

router.put('/changepass/:user_id', auth, async (req, res) => {

    const errors = validationResult(req);
    if(!errors.isEmpty()) {
        return res.status(400).json({errors: errors.array()});
    }

    const {oldPassword, newPassword} = req.body;

    try {
        const user = await User.findById(req.params.user_id);

        const salt = await bcrypt.genSalt(10); //10 rounds

        const prevPassword = await bcrypt.hash(oldPassword, salt);

        if(prevPassword !== user.password) {
            return res.status(400).send({errors: [{msg: 'Old password does not match'}]});
        }

        user.password = await bcrypt.hash(newPassword, salt);

        await user.save();

    } catch(err) {
        console.error(err.message);
        res.status(500).send('Server Error');
    }
})

Проблема в том, что prevPassword ha sh не совпадает с ha sh уже сохраненного пароля пользователя, даже если строки пароля одинаковы. Почему я получаю 2 разных хэша для одной строки пароля?

...