Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 Nodejs根据每个请求创建会话_Javascript_Node.js_Session - Fatal编程技术网

Javascript Nodejs根据每个请求创建会话

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

我们正在创建一个nodejs应用程序,我需要在其中维护会话。我们使用express来维护节点变量。但问题是,每当我们使用一个新服务时,就会创建一个新会话

app.js文件如下所示

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,因此不清楚这是否是真正的问题。如果遵循第二个链接(),您将发现一个代码示例,其中显示了问题(包括生成的标题),以及在无法升级时修复问题的代码。