【问题标题】:Accessing session from within socket.io从 socket.io 中访问会话
【发布时间】:2014-05-26 23:08:44
【问题描述】:

是否可以访问和修改会话变量 从socket.io级别?

请求中的常规示例

 req.session.variable = 5 

【问题讨论】:

    标签: node.js session socket.io


    【解决方案1】:

    你可以通过这个项目在socket.io中使用session

    https://github.com/wcamarao/session.socket.io

    或者自己做:

    从握手数据中获取 cookie

    socket.handshake.headers.cookie
    

    使用 cookie 模块解析 cookie

    var cookie = require('express/node_modules/cookie');
    var cookies = cookie.parse(socket.handshake.headers.cookie);
    

    cookie 已签名,因此您需要先对其进行验证,然后再获取 sessionID

    var connect  = require('express/node_modules/connect');
    var sessionID = connect.utils.parseSignedCookie(cookies['connect.sid'], /*The secret you used in your express session*/);
    

    然后你可以从你的 sessionstore 中加载会话

    sessionStore.load(sessionID, function (err, session) {
                    if (!err && session) {
                        //Here you have your session if everything ok
                    }
                });
    

    【讨论】:

    • 我已经做到了,但这是正确的答案,所以我会这样标记。
    • 我一直在寻找同样的东西。您的回答非常有道理,但是我为此做了一些解决方法。
    猜你喜欢
    • 2014-04-30
    • 1970-01-01
    • 2016-08-27
    • 2013-08-30
    • 1970-01-01
    • 2013-10-05
    • 2018-02-24
    • 2014-05-09
    • 2021-08-11
    相关资源
    最近更新 更多