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);
});