在Express中手动设置会话ID

时间:2013-11-19 00:27:34

标签: javascript angularjs node.js express passport.js

我有一个Angular / Express应用程序,我正在尝试实现某种宁静的身份验证。 Express应用程序具有Passport标准用户名/通行证登录和Redis会话。成功登录后,我返回会话ID和angular,然后将其发送到标头中的每个请求。问题是我不知道怎么让Express使用它作为会话ID。我曾尝试在中间件中写入req.sessionId但没有成功。

如何使用标头或查询字符串作为发送会话ID的方法。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。这似乎对我有用,尝试一下,让我知道它是否适合你:

app.use(function (req, res, next) {
    // I'm pulling it from the query string. You could use headers.
    if (req.query.session) {
        req.sessionID = req.query.session;
        req.sessionStore.get(req.query.session, function (err, sess) {
            // This attaches the session to the req.
            req.sessionStore.createSession(req, sess);
            next()
        })
    } else {
        next()
    }
})

缺点是它会让会话两次。我应该写一个会话处理程序的子类,但我现在很懒。

更新: 我决定不懒和叉快递。我提交了一个拉取请求,但在此之前您可以找到它here