【问题标题】:How to run multiple express/Nodejs application in localhost?如何在 localhost 中运行多个 express/Nodejs 应用程序?
【发布时间】:2016-10-06 15:43:42
【问题描述】:

我正在端口 3000 中运行我的客户端(前端)应用程序快速应用程序,并在 8080 中运行另一个管理员快速应用程序。

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

我正在使用 Express-session npm 进行管理,而前端就像一个 cms 前端,即没有会话或任何复杂的东西。谁能告诉我为什么会这样?

【问题讨论】:

  • 如果不知道如何在代码中设置会话处理,则无法判断。但我怀疑会话是否 lost 因为在其他节点应用程序中导航。您更有可能为会话设置了较短的生命周期,并且它只是因为不活动而超时。

标签: node.js express express-session


【解决方案1】:

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

我的猜测是你没有给每个应用一个唯一的cookie name,所以你可能会在两个应用的会话处理之间受到干扰。

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

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

【讨论】:

  • 谢谢罗伯特.. 这行得通...我可以再问你一个我找到的会话内存存储模块。由于 express-session 将值存储在内存存储中,因此将其用于生产是不可行的(如文档本身所述不适合生产)。那么使用 session-memory-store 确实对生产有帮助吗??
  • @AkhilGopan 我不会在生产中使用内存存储。但是there are a lot of alternatives,也许可以与您已经在使用的数据库一起使用。
  • 谢谢罗伯特...我使用 Postgres,我将使用它来实现。
【解决方案2】:

在不同的浏览器中运行

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

更换浏览器可能是一个不错的解决方案。

想在同一个浏览器中运行

只需在normal mode 中运行一项服务并在incognito mode 中运行其他服务

【讨论】:

    【解决方案3】:

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

    来自文档:

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

    【讨论】:

      猜你喜欢
      • 2020-07-08
      • 1970-01-01
      • 2019-03-07
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 2018-06-25
      • 1970-01-01
      相关资源
      最近更新 更多