小编Mar*_*kus的帖子

Express SessionID与Cookie中的SessionID不同

通过使用给定的示例我有相应的问题.在该示例中,通过首先重新加载会话在WebSocket中使用:

  socket.on('set value', function (val) {
    sess.reload(function () {
      sess.value = val;
      sess.touch().save();
    });
  });
Run Code Online (Sandbox Code Playgroud)

试图在我自己的应用程序中使用它,我得到以下异常:

  sess.reload(function () {
       ^
TypeError: Object #<Object> has no method 'reload'
Run Code Online (Sandbox Code Playgroud)

我认为问题是,没有人将变量sess定义为session:

io.listen(app).set('authorization', function (data, accept) {
  if (!data.headers.cookie) 
    return accept('No cookie transmitted.', false);

  data.cookie = parseCookie(data.headers.cookie);
  data.sessionID = data.cookie['express.sid'];

  store.load(data.sessionID, function (err, session) {
    if (err || !session) return accept('Error', false);

    data.session = session;
    return accept(null, true);
  });
})
Run Code Online (Sandbox Code Playgroud)

也许有些人对此有一个简短的解决方案?

问题解决了:我尝试使用这个例子:https://github.com/DanielBaulig/sioe-demo/blob/master/app.js与Express 3.0和Redis.

因此我创建了一个Redis商店(connect-redis)而不是MemoryStore:

app.use(express.session({cookie: {expires: new Date(Date.now() + …
Run Code Online (Sandbox Code Playgroud)

session redis node.js express socket.io

12
推荐指数
1
解决办法
6026
查看次数

标签 统计

express ×1

node.js ×1

redis ×1

session ×1

socket.io ×1