javascript - 使用passport-local-mongoose更改密码时如何自动登录
问题描述
无法自动登录用户。我当前的“更新”功能看起来像这样
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);
解决方案
使用回调而不是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('/');
});
推荐阅读
- machine-learning - 为什么我在同一张图片上得到了 2 个不同的特征图和相同的内核?
- excel - 从打开的文本字段中过滤电话号码 - Power BI、excel、VBA
- java - 如何将包含 JAX-RS 资源的 jar/war 与 Quarkus 集成
- c# - 来自对象的空引用异常
- r - 在R Shiny中垂直居中导航栏选项卡
- javascript - 如何在一个命令中运行 nodemon 和 parcel watch
- sql - 如果满足同一张表中的条件,则 SQL 选择值
- laravel - Laravel Validator - 在检查其他规则后检查自定义验证规则
- angular - 角 NG-ZORRO。如何将组件拆分为模板
- azure-batch - 本地网络批处理