req.user 在 Express 4 中未定义

req.user undefined in Express 4

我构建了一个应用程序,该应用程序使用 Oauth 向第三方 Jawbone 应用程序进行身份验证。我试图在我的一条路线中从 req.user 中拉出 req.user.jawbone.token;但是,我收到一条错误消息,指出 req.user 未定义。我在 express 3 中使用它,但在升级到 express 4 后它不再工作 - 这让我相信我的会话没有正确存储。

以下是我的 app.js 配置的相关部分:

var passport        = require('passport');
var session         = require('express-session')
var MongoStore      = require('connect-mongo')({session: session});
require('./config/passport')(passport);

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());


// passport
app.use(passport.initialize());
app.use(passport.session());        // persistent login sessions
app.use(session({
    store: new MongoStore({
        url: mongoUrl 
    }),
    secret: 'password',
    resave: false,
    saveUninitialized: true 
}));

对于遇到此问题的任何其他人,问题是由于我的中间件顺序错误。我重新排列到下面,它工作正常

app.use(session({
    store: new MongoStore({
        url: mongoUrl 
    }),
    secret: 'password',
    resave: false,
    saveUninitialized: true 
}));
app.use(passport.initialize());
app.use(passport.session());