Как определить конкретный successRedirect в узле JS с помощью Express?
У меня есть вопрос об успешном перенаправлении в passport.authenticate. Я использую passport.js и локальную стратегию в nodejs и выражаю для входа пользователя и пытаюсь сделать конкретный маршрут successRedirect.
Например, если я вхожу в систему с идентификатором пользователя: gpaul(предполагается, что вход выполнен успешно), то для маршрута successRedirect должно быть указано "? Channel=gpaul".
Я сделал код, как показано ниже
var data_1 = {email:''};
app.post('/login',
function (req,res,next){
req.flash("email");
data_1.email = req.body.email;
console.log(data_1.email);
next();
}, passport.authenticate('local-login', {
successRedirect : ('/status.html?channel='+ data_1.email),
failureRedirect : '/login',
failureFlash : true
})
);
После реализации приведенного выше кода адрес выходит пустым, localhost:4000/? Channel = Как я могу поместить этот data_1.email в successRedirect?
У кого-нибудь есть идеи для этого...? Пожалуйста, помогите мне здесь..
Благодарю.
1 ответ
Попробуйте использовать пользовательский обратный вызов:
app.post('/login', function(req, res, next) {
passport.authenticate('local-login', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
return res.redirect('/status.html?channel='+ req.body.email);
})(req, res, next);
});
В этой реализации обратный вызов имеет доступ к req
а также res
объекты через закрытие. Следовательно, email
не будет пустым (в отличие от вашей реализации)