У меня проблема с паспортной js аутентификацией. Я получаю сообщение об ошибке при попытке получить доступ к свойству undefined при вызове res.redirect('/')
внутри моего passport.authenticate()
обратного вызова. Моя стратегия аутентификации выглядит следующим образом:
passport.use(new LocalStrategy({
session: false
}, (username, password, done) => {
console.log('strategy invoked');
let user = new User('jason', 'password');
return done(null, user);
}));
и мой обработчик маршрута:
app.post('/auth',
passport.authenticate('local', { failureRedirect: '/fail'},
function(req, res){
console.log('authenticate callback');
console.log(req.body); //logs undefined
res.redirect('/'); //throws error here
}
));
, поэтому, когда я использую curl для создания POST-маршрута / auth, я получаю сообщение об ошибке, которое говорит: : Cannot read property 'redirect' of undefined
. Я пробовал несколько вариантов обработчика маршрута, в том числе тот, в котором я просто устанавливал successRedirect на «/», но мой обработчик маршрута на «/» никогда не срабатывал. Я также попробовал это:
app.post('/auth', (req, res) => {
passport.authenticate('local', (req, res) => {
console.log('authenticate callback');
console.log(req.body);
res.redirect('/');
})(req, res);
});
Итак, мой вопрос:
Как я могу получить доступ к объектам req и res внутри обратного вызова аутентификации, чтобы прочитайте тело запроса и отправьте ответ, для example res.redirect('/');
?
Если настройка successRedirect: '/'
является лучшим вариантом, как я могу убедиться, что мои перенаправления действительно выполняются?