login到一个快速应用程序会破坏其他(相同的服务器)会话

我有两个独立的Express 4.x应用程序在同一台服务器上运行(不同的端口),共享一个MongoDB实例。 他们都使用不同的数据库,并有不同的会话秘密。

我可以单独login到应用程序A或B,而不会出现问题。 我的会议得到保持,一切都很好。 但是,如果我login到A然后login到B,则A中的会话被销毁(反之亦然)。

这两个应用程序具有几乎相同的本地身份validation 他们的serializeUserdeserializeUser是非常原始的(跟随Passport docs几乎到tee)。

看来,当login到A然后B, req.session.passport被销毁,导致req.user不正确序列化应用程序A和会话被认为是无效的。

我开始认为它与两个应用程序在同一台计算机(因此是域)上运行的事实不同,只有端口不同。

express-session :Node.js中Express的简单会话中间件 要使用这个,你必须像这样包含这个包。

 var session = require('express-session'); 

要安装此软件包,请运行以下命令:

 $ npm install express-session 

在Express中如何使用这个代码如下:

 app.use(session({ secret: 'secretkey', resave: false, saveUninitialized: true, cookie: { secure: true } })); 

默认情况下,在响应中设置的会话ID cookie的名称(以及从请求中读取)是connect.sid 。 要覆盖这个使用以下内容:

 app.use(session({ name: 'cookiename', secret: 'secretkey', resave: false, saveUninitialized: true, cookie: { secure: true } })); 

有关更多参考,请参阅此链接 – https://www.npmjs.com/package/express-session

注意: –app.use(passport.session())语句之前,将您的express-session语句放入您的应用程序app.js中。

希望这将有助于解决您的查询!