【发布时间】:2023-02-09 02:21:43
【问题描述】:
我一直在使用 passport-local 进行用户身份验证,并且一直在努力将诸如“用户名不存在”或“密码不匹配”之类的自定义消息从服务器发送到 React 前端。
const user = await User.findOne({ email });
if (!user) {
console.log("No user`");
return done(null, false, {
message: "User with this email ID doesn't exist",
});
}
我目前的方法是一个非常 hacky 的方法,只是在 express 函数中传递 passport.authenticate 函数。
authRouter.post("/login", (req, res, next) => {
passport.authenticate("local", (err, user, info) => {
const error = err as Error;
if (error) {
return res.status(500).json({ message: error.message });
}
if (info) {
return res.status(400).json({ message: info.message });
}
req.logIn(user, (error) => {
if (error) {
return res.status(500).json({ message: error.message });
}
return res.json(user);
});
})(req, res, next);
});
有一个更好的方法吗?我也尝试过将 connect-flash 与护照一起使用,但无法完全正常工作。
【问题讨论】:
标签: javascript node.js express passport.js passport-local