如何从 socket.io 中访问 req.session 变量?

Posted

技术标签:

【中文标题】如何从 socket.io 中访问 req.session 变量?【英文标题】:How to access req.session variables from within socket.io? 【发布时间】:2012-11-14 09:22:13 【问题描述】:

我正在使用 express 和 socket.io。我有一些req.session 变量希望从socket.io 中访问。我在socket.io and session 上阅读了这篇文章,但我仍然对如何获得req.session 变量感到非常困惑。

【问题讨论】:

请注意,您提到的答案是针对旧版本的 socket.io。也许看看this answer。不能说它是否仍然适用于个人,因为我不使用 socket.io。您还可以在socket.io wiki 上阅读有关授权的信息。 【参考方案1】:

实现此目的的一种方法是在套接字内部使用会话存储 - 这将包含您所有的会话变量。这就是我进行授权的方式(将 cookie ID 与数据库中的会话 ID 进行比较)。

io.set('authorization', function (data, accept) 

    if (data.headers.cookie) 

        data.cookie = utils.parseCookie(data.headers.cookie);
        data.sessionID = data.cookie['connect.sid'].split('.')[0].substring(2);

        sessionStore.get(data.sessionID, function (err, session) 
                // now you have all session variables
        );                     
    
);

【讨论】:

以上是关于如何从 socket.io 中访问 req.session 变量?的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 从远程 Cordova 应用程序连接 - 不允许访问

Flask:无法从 socket.io 监听器中访问 c​​urrent_app

我可以从 Socket.io 访问 cookie 吗?

socket.io - 如何访问未处理的消息?

如何防止多个 Socket.io 事件监听器

如何使用 Context API 将单个 Socket IO 实例传递给页面?