我正试图使用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)
1条答案
按热度按时间pcww981p1#
不是
|| or
,而是&& and