我有一个使用Passport和Express的身份验证API。在前端,我正在使用React,它从API读取JSON数据。一切正常,但是,如果用户登录时输入的电子邮件不存在,则服务器现在仅以401响应,如果密码不正确,则响应相同。
是否可以通过Passport或 用户输入无效电子邮件或无效密码时的服务器?
我尝试在Passport中添加“消息”,但是我还没有弄清楚如何访问它。
Passport.js
// Local Strategy
const localLogin = new LocalStrategy(
{ usernameField: "email", passwordField: "password" },
function(email, password, done) {
User.findOne({ email: email }, (err, user) => {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {
message: "We don't have an account with that email on file"
});
}
user.validPassword(password, (err, isMatch) => {
if (err) {
return done(err);
}
if (!isMatch) {
return done(null, false);
}
return done(null, user);
});
});
}
);
路由处理程序
exports.signIn = function(req, res, next) {
res.json({ token: createToken(req.user) });
};
路线
const requireSignIn = passport.authenticate("local", { session: false });
router.post("/login", requireSignIn, Auth.signIn);