Javascript Nodejs根据每个请求创建会话
我们正在创建一个nodejs应用程序,我需要在其中维护会话。我们使用express来维护节点变量。但问题是,每当我们使用一个新服务时,就会创建一个新会话 app.js文件如下所示Javascript Nodejs根据每个请求创建会话,javascript,node.js,session,Javascript,Node.js,Session,我们正在创建一个nodejs应用程序,我需要在其中维护会话。我们使用express来维护节点变量。但问题是,每当我们使用一个新服务时,就会创建一个新会话 app.js文件如下所示 var redistore=require('connect-redis')(会话); module.exports=函数会话(url,机密){ var store=new RedisStore({url:url}); var会话=会话({ 秘密:“dfsf”, 存储:'测试', 雷萨夫:是的, saveUninit
var redistore=require('connect-redis')(会话);
module.exports=函数会话(url,机密){
var store=new RedisStore({url:url});
var会话=会话({
秘密:“dfsf”,
存储:'测试',
雷萨夫:是的,
saveUninitialized:true
});
返回会议;
};
您是否设置了快速会话
中间件?仅要求软件包是不够的,您需要使用它,如下所示:
const session = require('express-session');
const RedisStore = require('connect-redis')(session);
app.use(session({
store: new RedisStore(config.redis),
secret: 'w5qTAcEMgNeNzrPg',
proxy: true,
resave: true,
saveUninitialized: true
}));
(在本例中,我使用Redis session store)由于您使用的是内置的bodyParser和cookieParser,它们仅包含在4.x之前的Express版本中,因此我断定您使用的是过时的Express版本。升级Express可能会解决您的问题(有关从3.x升级到4.x的信息:) 设置多个cookie时,set cookie头似乎有问题,因此会话cookie没有在第一个请求(或应该设置另一个cookie的每个其他请求)上设置。在您的整个设置中是否存在这种情况
有关此问题的更多信息和可能的解决方法,请阅读我对另一个问题的以下回答:请发布如何初始化会话。另外,如果我运行
curl-v,请发布从express发送的标题。添加了标题和初始化方法http://localhost:3000/
set cookie:connect.sid=s%3AvrxyuLkQ8JHDS7O5kZ9vL9jU0TOPaGip.K3zFYVzopymsz5eXPMEN5pTlaKBHgZso3DJu3EidmW8;路径=/;HttpOnly。请确认set cookie header是从你的应用发送的。添加代码而不是链接以更好地解释答案。我真的不认为有理由发布完全相同的代码和解释两次,因为这不会使解释本身“更好”。此外,@Sumeet没有澄清他的设置中是否设置了多个cookie,因此不清楚这是否是真正的问题。如果遵循第二个链接(),您将发现一个代码示例,其中显示了问题(包括生成的标题),以及在无法升级时修复问题的代码。