我有一个Kraken应用程序,它使用Passport和redis作为会话存储。 在客户端上,我还使用socket.io连接,基于与我的应用程序不同的服务器。
我已经将Redis设置为双方的会话存储,使用相同的URL,它似乎工作正常(因为我没有看到套接字服务器上的错误)。但是,我似乎无法在套接字端检索会话信息。
目前,我已将Kraken配置为:
{
"secret": "SuperSecret",
"cookie": {
"path": "/",
"httpOnly": true,
"originalMaxAge": 86400,
"maxAge": 86400
},
"proxy": null
},
并且创建的cookie反映了客户端上的内容(maxAge匹配)
然而在插座方面,我得到了这个:
session:
{ cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true }
}
}
我通过套接字端的中间件连接到商店:
var sessionMiddleware = session({
store: new RedisStore(config.redisFront),
secret: "SuperSecret",
});
io = require('socket.io')(5000);
io.use(function(socket, next) {
sessionMiddleware(socket.request, socket.request.res, next);
});
socket.request.sessionID和res.sessionID中的sessionID也不同。在我的方法中,我是忽视某些事情还是仅仅是错误的?如果您需要更多信息,请告诉我,我很乐意提供相关信息。