我是 Passport 新手,正在尝试将用户重定向到他们之前在 Facebook 进行身份验证后所在的页面。我试图在 session 上设置一个“req.session.returnTo”属性,但它在 facebook/auth 回调中不断被清除(在该函数中的每个地方都显示为未定义)。我的方法有什么问题吗?
protected 路线:
app.post('/api/recipebox', ensureAuthenticated, function (req, res) {
});
确保经过身份验证:
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
req.session.returnTo = req.path;
res.redirect('/#!/login');
}
//Facebook/Passport.js 回调:
app.get('/auth/facebook/callback', function (req, res, next) {
passport.authenticate('facebook', function (err, user, redirectURL) {
// console.log(' in the callback ');
if (err) {
console.log(err);
return res.redirect('/#!/login');
}
if (!user) {
return res.redirect('/#!/signup');
}
if (req.user) {
// console.log("==================== This is the user from routes.js", req.user);
res.cookie('user', JSON.stringify(user));
}
//actually storing the fact that they are logged in:
req.login(user, function (err) {
if (err) {
return res.redirect('/#!/login');
}
// console.log('=========== here!', user);
res.redirect(req.session.returnTo || '/#!');
req.session.returnTo = null;
});
})(req, res, next);
})
最佳答案
我正在使用本地策略进行电子邮件和密码登录。我引用以下链接设置我的passport JS认证和登录:Passport Facebook
- 使用上面链接中所示的 Facebook 策略。
使用如下所示的路由
app.get('/auth/facebook/callback',passport.authenticate('facebook', successRedirect: 'whatever-url-you-want', failureRedirect: '/login' }));
关于javascript - Passport - NodeJS - Facebook 身份验证后将用户返回到上一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33404593/