如何在localhost中运行多个express / Nodejs应用程序?

时间:2016-10-06 05:31:08

标签: node.js express express-session

我在端口3000运行我的客户端(frondend)app express app,在8080运行另一个管理快递应用程序。

但是当我浏览任何页面或刷新客户端快递应用程序中的任何页面时,管理员应用程序中的会话将丢失并重定向到登录。

我正在使用Express-session npm for admin和frond end就像一个cms frondend,即没有会话或任何复杂的东西。任何人都可以告诉我为什么会这样吗?

3 个答案:

答案 0 :(得分:1)

在端口3000上运行的应用的Cookie也会发送到在端口8080上运行的应用(反之亦然)。

我的猜测是,您没有为每个应用提供唯一的cookie name,因此您可能会对这两个应用的会话处理产生干扰。

因此,请为每个使用不同的Cookie名称:

app.use(session({
  name : 'frontend.sid', // and, say, 'admin.sid' for the admin app
  ...
}));

答案 1 :(得分:0)

在不同的浏览器中运行

在不同的浏览器中尝试其中一个,例如chrome中的一个和mozilla中的其他浏览器。这是由于会议在那里发生冲突而发生的。

  

更改浏览器可能是一个很好的解决方案。

想要在同一个浏览器中运行

只需在normal mode中运行一项服务,然后在incognito mode

中运行其他服务即可

答案 2 :(得分:0)

根据提供的信息,我建议您查看初始化快速会话的方式。如果secure标志设置为true,则期望为localhost设置有效的HTTPS证书,否则将不会创建会导致重定向问题的会话。

来自文档:

  

secure:指定Secure Set-Cookie的布尔值   属性。当真实时,设置Secure属性,否则设置   不。默认情况下,未设置Secure属性。   请注意,secure:true是推荐选项。但是,它   需要启用https的网站,即HTTPS是安全所必需的   饼干。如果设置了安全性,并且您通过HTTP访问您的站点,则   cookie将不会被设置。