无法读取空值的属性(正在读取‘password’)

63lcw9qa  于 2022-09-18  发布在  Go
关注(0)|答案(1)|浏览(194)

我正试图使用Express js和mongodb构建一个用户登录系统,但问题是,每当我尝试使用正确的用户名和密码作为用户登录时,它都工作得很好,但如果我使用了错误的用户名,它就会给我一个错误。只有当用户名错误或用户名和密码都错误时,它才会出现此错误,但当密码错误时不会出现此错误。这是我的用户登录码:

router.post("/login", async (req, res) => {
  try {
    const user = await User.findOne({
      username: req.body.username,
    });

    const hashedPassword = cryptoJS.AES.decrypt(
      user.password,
      process.env.PASS_SEC
    );
    const accessToken = jwt.sign(
      { id: user.id, isAdmin: user.isAdmin },
      process.env.jwt_SEC,{expiresIn:"3d"}
    );
    const originalPassword = hashedPassword.toString(cryptoJS.enc.Utf8);
    const inputPassword = req.body.password;
    if (originalPassword !== inputPassword || !user) {
      res.status(401).json("Wrong cridentials");
    } else {
      const { password, ...others } = user._doc;
      console.log(others);
       res.status(201).json({...others,accessToken});
    }
  } catch (error) {
    res.status(500).json(error);
    console.log(error);
  }
});

这是我遇到的错误:

TypeError: Cannot read properties of null (reading 'password')
at D:WebAPIRouterauth.js:33:12
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

相关问题