我的 Web 应用程序生产部署在负载均衡器后面的 2 台服务器上。
我正在使用带会话的护照(本地策略)进行身份验证。
当应用程序在一台服务器上运行时,一切正常,但在生产中,一台服务器无法识别另一台服务器建立的 cookie/会话(每个请求随机发送到不同的服务器,我无法控制它)。
结果 - 我在尝试访问需要身份验证的页面时被重定向到登录页面(即使在我登录之后)。
我怎样才能让两台服务器创建一个它们都识别的会话 cookie(显然我对快速会话中间件使用了相同的秘密)。
谢谢,
阿隆
我的 Web 应用程序生产部署在负载均衡器后面的 2 台服务器上。
我正在使用带会话的护照(本地策略)进行身份验证。
当应用程序在一台服务器上运行时,一切正常,但在生产中,一台服务器无法识别另一台服务器建立的 cookie/会话(每个请求随机发送到不同的服务器,我无法控制它)。
结果 - 我在尝试访问需要身份验证的页面时被重定向到登录页面(即使在我登录之后)。
我怎样才能让两台服务器创建一个它们都识别的会话 cookie(显然我对快速会话中间件使用了相同的秘密)。
谢谢,
阿隆
选项1
将负载均衡器配置为始终将相同的 ip 路由到同一台机器。对于更改网络的用户来说可能会有问题。
选项二
使用第三台运行数据库的机器并设置 express.session(以及与此相关的任何其他数据库连接)以将该机器用作存储。这个问题/答案提到了如何使用 mongoose/mongodb。
我认为这是更常见的解决方案,但如果您不需要第三台机器,当然会更昂贵。