Socket.io sessionStore,store.get方法不存在

我想用Socket.io和passport.js来使用会话存储

var session = require('express-session'); var cookieParser = require('cookie-parser'); var MongoStore = require('connect-mongo')(session); var sessionStore = session({ store: new MongoStore({url: 'mongodb://localhost/RULE'}), key: 'express.sid', secret: 'Heisenberg' }); // Socket.io auth io.set('authorization', passportSocketIo.authorize({ cookieParser: cookieParser, key: 'express.sid', secret: 'Heisenberg', store: sessionStore, success: onAuthorizeSuccess, fail: onAuthorizeFail, })); 

我得到这个错误: TypeError: auth.store.get is not a function

所以我想这是connect-mongo商店实例的问题,但我不怎么debugging它或者是什么问题。

好的,所以问题是我正在服务于express session而不是MongoStore

 var session = require('express-session'); var cookieParser = require('cookie-parser'); var MongoStore = require('connect-mongo')(session); var sessionStore = new MongoStore({url: 'mongodb://localhost/RULE'}); var expressSession = session({ store: sessionStore, key: 'express.sid', secret: 'ThisIsTheSecret' }); var passportSocketIo = require('passport.socketio'); // Load middlewares var morgan = require('morgan'); // Use middlewares app.use(expressSession); // Socket.io auth io.set('authorization', passportSocketIo.authorize({ cookieParser: cookieParser, key: 'express.sid', secret: 'ThisIsTheSecret', store: sessionStore, success: onAuthorizeSuccess, fail: onAuthorizeFail, }));