Node.js passport facebook登录不持久
我使用的标准示例包含:Node.js passport facebook登录不持久,node.js,passport.js,passport-facebook,Node.js,Passport.js,Passport Facebook,我使用的标准示例包含: app.get('/login/facebook', passport.authenticate('facebook')); app.get('/login/facebook/return', passport.authenticate('facebook', { failureRedirect: '/login' }), function(req, res) { //req.user is populated res.redirect('
app.get('/login/facebook',
passport.authenticate('facebook'));
app.get('/login/facebook/return',
passport.authenticate('facebook', { failureRedirect: '/login' }),
function(req, res) { //req.user is populated
res.redirect('/');
});
app.get('/', function (req, res) {
res.render('index.jade', { user: req.user }); //req.user is undefined
});
登录似乎工作正常。在/login/facebook/return
中,我可以看到req.user
及其详细信息。但是在被重定向到/
后,req.user
变为未定义
还有什么我必须添加才能使其正常工作的吗?根据,passport.initialize()
和passport.session()
(对于持续登录)应在快速会话
之后将中间件添加到应用程序
从文档中:
请注意,启用会话支持是完全可选的,尽管大多数应用程序都建议启用会话支持。如果启用,请确保在passport.session()
之前使用express.session()
,以确保按正确顺序恢复登录会话
确保你有
app.use(passport.initialize())代码>和应用程序使用(passport.session())代码>在你的路由器之前。谢谢你的提示。我已经在passport.initialize()
之后重新安排了示例代码的express session
。在passport.initialize()之前移动express session
,解决了这个问题。我很高兴你能解决这个问题。我也把它作为答案贴了出来。
app.configure(function() {
app.use(express.static('public'));
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.session({ secret: 'keyboard cat' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
});