как автоматически войти в систему при изменении пароля с помощью паспорта-местного-мангуста - PullRequest
0 голосов
/ 09 мая 2020

Не может войти в систему автоматически. Моя текущая функция «обновления» выглядит так:

exports.update = async (req, res) => {
const user = await User.findOne({
    resetPasswordToken: req.params.token,
    resetPasswordExpires: {$gt: Date.now()}
});
if(!user){
    req.flash('error', 'Password reset is invalid or has expired');
    return res.redirect('/login');
}

await user.setPassword(req.body.password);

user.resetPasswordToken = undefined;
user.resetPasswordExpires = undefined;
const updatedUser = await user.save();
await req.login(updatedUser);
req.flash('sucess', "Nice! your password has been reset! You are now logged in!");
res.redirect('/'); 
};

, показывающая эту ошибку

req#login requires a callback function

Error: req#login requires a callback function
at IncomingMessage.req.login.req.logIn (/home/rajat/NOde/myProject-First/node_modules                  /passport/lib/http/request.js:47:44)
at exports.update (/home/rajat/NOde/myProject-First/controllers/authController.js:94:15)
at processTicksAndRejections (internal/process/task_queues.js:97:5)

Я думаю, проблема в await req.login(updatedUser);

1 Ответ

1 голос
/ 09 мая 2020

Используйте обратный вызов вместо async/await

const updatedUser = await user.save();
req.logIn(updatedUser, function(err) {
    if (err) {
        console.log('Failled to login ', err);
        return res.redirect('/login');
    }
    req.flash('sucess', "Nice! your password has been reset! You are now logged in!");
    res.redirect('/');
});
...