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

标签 javascript node.js mongodb session passport.js

我正在尝试通过 Socket.io 和 passport.js 使用 session 存储

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 不是函数

所以我猜这是 connect-mongo 存储实例的问题,但我不知道如何调试它或可能是什么问题。

最佳答案

好的,所以问题是我提供的是 express session 而不是 MongoStore

var session = require('express-session');
var cookieParser = require('cookie-parser');
var MongoStore = require('connect-mongo')(session);
// sessionStore and expressSesion are now saved distinctly
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, // here we pass the MongoStore, not the expressSession
    success: onAuthorizeSuccess,
    fail: onAuthorizeFail,
}));

关于javascript - Socket.io sessionStore,store.get 方法不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999996/

相关文章:

javascript - TypeError:未定义不是对象错误

javascript - 如何在React中渲染来自Nodejs后端的图像作为res.json()?

arrays - MongoDB $elemMatch $in

mongodb - 选择字段值在某个数组中的子文档

python - 如何通过mongoengine中的主键获取文档?

javascript - 附加的输入字段元素在 angularjs 中不起作用

javascript - 如何验证 vue.js 中的动态输入字段?

javascript - 将元素放入内部后,div 的大小会增加

javascript - 关于在 node.js 和浏览器中共享模型代码的建议

javascript - 在 node.js 中使用参数时,对象没有方法 'reduce' 错误?