Я использую Passport.js для аутентификации в Express 4 API. В основном все работает нормально, но я обнаружил, что отправка правильных ответов json, т.е. сообщений об ошибках или объектов, с паспортом затруднена. Например, это мой LocalStrategy
для входа в систему:
passport.use (
'login',
new LocalStrategy (
{
usernameField: 'email',
},
(email, password, done) => {
User.findOne ({email: email}, (err, foundUser) => {
if (err) return done (err);
if (!foundUser) {
return done (null, false, {
message: 'Invalid Username.',
});
}
if (!foundUser.comparePassword (password)) {
return done (null, false, {
message: 'Invalid Password.',
});
}
return done (null, foundUser);
});
}
)
);
Я устанавливаю пользовательские message
s для случаев, когда аутентификация не удалась, но эти сообщения никогда не отображаются в моих ответах API. Как мне отправлять подобные сообщения, если во время аутентификации что-то идет не так?
app.post (
'/signup',
passport.authenticate ('signup', {
successRedirect: '/user',
failureMessage: true,
successMessage: true,
})
);
Более того, вместо установки перенаправлений, таких как successRedirect
Я хочу отправлять правильные ответы json для каждого случая, и если возникает ошибка, я хочу отправить это как объект json вместо перенаправления на маршрут. Как я могу это сделать?