首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取空属性(读取“密码”)

无法读取空属性(读取“密码”)
EN

Stack Overflow用户
提问于 2022-09-15 15:07:09
回答 1查看 74关注 0票数 0

我试图使用express js和MongoDB构建一个用户登录系统,但问题是,每当我试图以用户身份使用正确的用户名和密码登录时,它就能正常工作,但是如果我使用的用户名不对,就会导致错误。它只在用户名错误或用户名和密码都是错误时,而在密码错误时才会出现此错误。这是我的用户登录代码:

代码语言:javascript
复制
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);
  }
});

这是我所犯的错误:

代码语言:javascript
复制
TypeError: Cannot read properties of null (reading 'password')
at D:\Web\API\Router\auth.js:33:12
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
EN

回答 1

Stack Overflow用户

发布于 2022-09-15 19:20:33

不要使用logical OR (||)运算符,而是尝试logical AND (&&)运算符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73733512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档