Я занимаюсь разработкой веб-приложения на основе 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 разных хэша для одной строки пароля?