Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Express中手动设置会话ID_Javascript_Angularjs_Node.js_Express_Passport.js - Fatal编程技术网

Javascript 在Express中手动设置会话ID

Javascript 在Express中手动设置会话ID,javascript,angularjs,node.js,express,passport.js,Javascript,Angularjs,Node.js,Express,Passport.js,我有一个Angular/Express应用程序,正在尝试实现某种restful身份验证。Express应用程序具有Passport标准用户名/密码登录和Redis会话。成功登录后,我返回会话ID,然后将其发送到头中的每个请求。问题是,我不知道如何使Express将其用作会话ID。我尝试在中间件中写入req.sessionId,但没有成功 如何使用标题或查询字符串作为发送会话id的方式 我也有同样的问题。这似乎对我有效,试试看,如果对你有效,请告诉我: app.use(function (req,

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


如何使用标题或查询字符串作为发送会话id的方式

我也有同样的问题。这似乎对我有效,试试看,如果对你有效,请告诉我:

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()
    }
})
缺点是它确实会得到两次会话。我应该编写会话处理程序的子类,但我现在很懒

更新:
我决定参加一个非懒惰和fork-express会议。我提交了一个pull请求,但在此之前您可以找到它。

我猜,当angular获得sessionId时,它会将它与每个请求一起发送,很可能是作为cookie头发送。您是如何检查包含sessionId的请求是否到达express服务器的?我建议你衡量一下,如果一个请求延长了express SessionImout,也许一切都已经开始工作了。@angabriel Cookie/session可以很好地工作-但我正在探索其他方法,因为我想在跨域上进行身份验证-我可以获得会话ID,但似乎无法使用其他方法来设置它