2017-02-14 3 views
0

У меня есть вопрос о successReirecting in passport.authenticate. Я использую passport.js и локальную стратегию в nodejs и выражаю для входа пользователя в систему и пытаюсь сделать конкретный успех.Как определить конкретный успехRedirect в узле js с помощью выражения?

Например, если я вхожу в систему с идентификатором пользователя: gpaul (притворяется успешным входе в систему), тогда successRedirect route должен быть '? 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 
    }) 
); 

После реализации выше кода, адрес выходит с пустым, локальный: 4000/канал = Как я могу положить, что data_1.email в successRedirect?

Есть ли у кого-нибудь идеи для этого ...? Пожалуйста, помогите мне здесь.

Спасибо.

ответ

2

Попробуйте использовать Custom Callback:

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 не будет пустым (в отличие от вашей реализации)

+0

Вау, ты мой спаситель жизни !!! :) – paulc1111

+0

Спасибо, что помогли мне. :) – paulc1111

+0

Happy to help :) –