can';t从node.js connect mongo中的会话存储中获取会话
我正在使用connect mongo存储会话数据,这是启动express服务器和mongodb会话的代码can';t从node.js connect mongo中的会话存储中获取会话,node.js,mongodb,session,Node.js,Mongodb,Session,我正在使用connect mongo存储会话数据,这是启动express服务器和mongodb会话的代码 var MongoStore = require('connect-mongo')(express); var sessionStore = new MongoStore({url: config.sessionStore}, function() { console.log('connect mongodb session succes
var MongoStore = require('connect-mongo')(express);
var sessionStore = new MongoStore({url: config.sessionStore}, function() {
console.log('connect mongodb session success...');
})
app.configure(function(){
............
// // cookieParser should be above session
app.use(express.cookieParser());
// express/mongo session storage //
app.use(express.session({
cookie: { maxAge: 24 * 60 * 60 * 1000 },
store: sessionStore,
secret: config.sessionSecret,
key: 'express.sid',
clear_interval: 3600
}));
............
})
我查看了chrome浏览器,当然可以看到我的会话键--“express.sid”和相应的值
当用户登录到我的服务器时,我希望从我的mongodb会话存储中获取他们的会话数据。但是,会话存储查询会话数据时没有错误,只显示输出null
var connect = require('express/node_modules/connect')
, parseSignedCookie = connect.utils.parseSignedCookie
, cookie = require('express/node_modules/cookie');
function fileUpload(req, res) {
var sid = req.cookies['express.sid'];
var sessionID = parseSignedCookie(sid, config.sessionSecret);
console.log('fileUpload ',req.ip, sid,sessionID);
// output the session value as expected
// but session store can't query the session data, no error but just no values
sessionStore.get(sid, function(err, session){
// access to session
if(err) console.log("session store err".red,error);
else console.log("sessionStore auth ".green+session);
});
res.send(200);
};
我的节点出了什么问题,或者我遗漏了什么?您需要将mongo用于会话存储吗?通常,人们最终会使用Redis进行会话存储,因为它速度更快,而且您需要读取每个页面上的会话数据。您希望自己从数据库中检索会话数据有什么特殊原因吗?使用会话存储的全部意义在于Express和存储(反)为您自动序列化会话,并通过
req.session
使其可用。在使用socket.io的过程中,在身份验证阶段,需要获取会话uid并使用它来查询用户是否经过身份验证。问题是socket.io无法通过会话进行身份验证,这就是我使用上面的代码进行测试的原因