我试图使用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:\Web\API\Router\auth.js:33:12
at processTicksAndRejections (node:internal/process/task_queues:96:5)发布于 2022-09-15 19:20:33
不要使用logical OR (||)运算符,而是尝试logical AND (&&)运算符。
https://stackoverflow.com/questions/73733512
复制相似问题