为什么重置密码后无法登录?

问题描述

我发现创建密码重置很困难,这对你们所有人来说可能都很容易。对不起,这是我第一次,所以似乎不可能。但是,我设法创建了一个密码重置发送电子邮件,使用 bcrypt 生成令牌,但是在更改密码后,同一用户无法登录系统。这一切都在服务器中,这里是密码重置请求的代码

router.put("/users/passwords/forget",async (req,res) => {
const { errors,isValid } = validateEmailForForgottenPasswordInput(req.body);
//Validating
if (!isValid) {
  return res.status(400).json(errors);
}

const email = req.body.email;

await db.user
 .findOne({ where: { [Op.or]: [{ email: email },{ username: email }] } })
.then((user) => {
  if (!user) {
    errors.email =
      "User not found";
    res.status(404).json(errors);
    return;
   }

    const token = usePasswordHashTomakeToken(user);
    const url = getpasswordResetURL(user,token);
    const emailTemplate = resetPasswordTemplate(user,url);

    db.user
    .update(
      {
        reset_link: token,},{ where: { [Op.or]: [{ username: email },{ email: email }] } }
    )
    .then((infoD) => res.json(infoD))
    .catch((err) => console.log(err));

    const sendEmail = () => {
    transporter.sendMail(emailTemplate,(err,info) => {
      if (err) {
        res.status(500).json("Cant send email");
      }
      res.json(info);
    });
  };
  sendEmail();
})
.catch((err) => console.log(err));
 });

用户收到电子邮件并打算更新密码时,他们使用这种方法

router.put("/passwords-restoration/restore/:id/:token",isValid } = validateForgottenPasswordInput(req.body);
  if (!isValid) {
   return res.status(400).json(errors);
}

var salt = bcrypt.genSaltSync(10);

await db.user
.findOne({ where: { id: req.params.id } })
.then((user) => {
  if (!user) {
    errors.password =
      "Det går inte at byta lösenord för användare som inte existeras";
    res.status(404).json(errors);
    return;
  }
  if (req.body.password)
    user.password = bcrypt.hashSync(req.body.password,salt);
  if (req.body.password2) user.password2 = req.body.password2;
  user.update(
    {
      password: user.password,{ $set: user },{ new: true }
  );

   user.save().then((user) => res.json(user));
  })
   .catch((err) => console.log(err));
  });

然后当该人尝试登录时,他们无法再登录

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)