Я получаю сообщение об ошибке при попытке сравнить мой хешированный пароль, который хранится в базе данных, с введенным пользователем паролем.
Я попытался использовать функцию вместо жирной стрелки, попытался привести в порядок мои req.body.password
и попытался просмотреть документы bcrypt, но, похоже, я все написал правильно.
app.post("/user/login", (req, res, next) => {
User.find({email: req.body.email}).then(user => {
if(!user) {
return res.status(401).json({
message: `Couldn't find user`
});
}
console.log(req.body.password);
console.log(user);
return bcrypt.compare(user.password, req.body.password).then((resp) => {
console.log(resp);
if (!resp) {
return res.status(401).json({
message: `Wrong password`
});
}
console.log('JWT created')
const token = jwt.sign(
{ email: user.email, userId: user._id, userName: user.userName },
process.env.JWT_SECRET,
{ expiresIn: '1h' }
);
res.status(200).json({
message: 'JWT generated',
token
}).catch( err => {
return res.status(401).json({
message: 'JWT not created'
})
})
})
})
Я хочу, чтобы функция bcrypt.compare
работала так, как должна, но выдает ошибку
UnhandledPromiseRejectionWarning: Error: data and hash arguments required
at Object.compare
UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)