Javascript 在Express中手动设置会话ID
我有一个Angular/Express应用程序,正在尝试实现某种restful身份验证。Express应用程序具有Passport标准用户名/密码登录和Redis会话。成功登录后,我返回会话ID,然后将其发送到头中的每个请求。问题是,我不知道如何使Express将其用作会话ID。我尝试在中间件中写入req.sessionId,但没有成功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,
如何使用标题或查询字符串作为发送会话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,但似乎无法使用其他方法来设置它