从Express中的sid获取会话

时间:2018-06-18 01:47:31

标签: javascript node.js express

我试图设置多个websocket服务器来处理具有一个中央http服务器的用户。快递程序通过在会话中存储用户名来在登录期间建立会话,并且用户被重定向到具有websocket客户端的页面。然后,websocket服务器尝试分解会话并在客户端连接时接收用户名。在测试期间,显而易见的是,用户对象仅存储在http服务器上(不在cookie中),并且实际上不能在websocket服务器上接收。这是http服务器代码:

    var http = require('http');
    var Express = require('express');

    var bodyParser = require('body-parser');
    var session = require('express-session');
    var sessionParser = session({
        secret: 'lalala',
        cookie: { 
            maxAge: 3 * 60 * 60 * 1000
        },
        resave: true,
        saveUninitialized: true
    });

    var app = Express();

    app.use(sessionParser);
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({
        extended: true
    }));

    var server = app.listen(args.port, function() {
        console.log("HTTP server connected!");
    });

现在我已经解释了整个问题,我的问题是:如何通过会话ID获取会话中存储的用户名?

P.S。 为了避免混淆,这个问题不是关于从HTTP GET / POST请求中获取用户名。基本上,我问WHERE会话是否存储在http服务器程序中,这样我就可以通过提供session_id来检索用户名。

1 个答案:

答案 0 :(得分:0)

我在快递会的github上问了同样的问题。这是我从Doug Wilson那里得到的答案:

"因为您从未设置会话存储并将其传递给此模块,所以您正在使用用于基本开发的内存存储,并且仅存储在http服务器内存中。您希望实际使用通过sid将会话存储在数据库中的存储。

您可以使用的商店列表位于自述文件中:https://github.com/expressjs/session/blob/master/README.md#compatible-session-stores"