node.js - Node+Passport.js + Sessions + 多台服务器

标签 node.js session cloud multiple-instances passport.js

Passport 很棒。我现在发现它处理 session 的方式有些问题。 我一定是用错了。

登录+ session +我存储在数据库中的用户数据对我来说一切都很好。 但是我发现当我转移到生产环境(云在 EC2 上有多个服务器)时,我每次都会丢失登录 session 。 我现在很清楚这一点 - 可能会发生,因为 session 对于每个服务器都是唯一的。

所以我的问题是 - 我该如何解决这个问题.. 我想我需要在用户的浏览器上存储我自己的 cookie?

这是否意味着我根本无法使用 express.session?

谢谢, 宜兰

最佳答案

好的, 所以基本上我一直在寻找的(不确定对其他人来说答案是否相同)是一种在负载平衡实例之间存储 session 数据而无需为每个页面 View 调用数据库的方法,这对我来说似乎太过分了,因为我只需要让用户保持登录到 Google/FB。

看来我要找的答案是cookie-session中间件 https://github.com/expressjs/cookie-session

这需要替换使用 MemoryStore 的默认 express.session 机制。顺便说一句,MemoryStore 本身会在运行时向您发出警告,它不会扩展到单个进程,而且它可能会导致内存泄漏。

如果我理解正确的话,这就是将 session 数据本身序列化到 session cookie 中(加密),而不是仅仅使用 session cookie 中的 session ID。 这对我来说似乎很完美。显然,如果您有大量 session 数据,我不希望它起作用,因为 cookie 的大小有限。就我而言,我只需要名称、ID 和头像 url,所以我认为这就足够了。 感谢所有提供帮助的人。

关于node.js - Node+Passport.js + Sessions + 多台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26026077/

相关文章:

javascript - 如何使用 Express .listen()(在 Typescript 中)处理错误?

node.js - 如何将 Protractor 作为脚本而不是子进程或使用任务运行器运行?

javascript - 如何将回调作为变量传递给 puppeteer 中的 page.evaluate?

node.js - Mongoose 根据键获取文档作为数组的数组

java - 如何在 Java Junit TestCase 中设置 session 变量

session - 如何安全检测服务中是否存在 session 范围?

asp.net-mvc - asp.net mvc 和网络农场

azure - Azure 上的桌面应用程序

amazon-web-services - 为多个 ec-2 实例分配主机名的最佳方法

kubernetes - 容器和 Kubernetes 是 IaaS 还是 PaaS?