Node+Passport.js + Sessions + 多个服务器

2024-02-10

护照很棒。我现在发现它处理会话的方式存在一些问题。 一定是我用错了。

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

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

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

谢谢, 宜兰


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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node+Passport.js + Sessions + 多个服务器 的相关文章

随机推荐

  • Google Cloud Dataprep 可以监控新文件的 GCS 路径吗?

    Google Cloud Dataprep 看起来很棒 我们已经用它来手动导入静态数据集 但是我想多次执行它 以便它可以使用上传到 GCS 路径的新文件 我可以看到您可以为 Dataprep 设置计划 但我在导入设置中看不到它将如何处理新文
  • 为什么用具有共同祖先的菱形案例来解释Java多重继承问题,而不是两个不相关的父类?

    这个问题对于 Java 人来说可能听起来很奇怪 但如果你尝试解释一下 那就太好了 这几天我正在理清Java的一些非常基础的概念 所以我来到了Java的继承和接口主题 在阅读本文时 我发现Java不支持多重继承 并且也理解了这一点 我无法理解
  • Slack 支持 Markdown 表格吗?

    我想将 Markdown 表发送到 SlackpostMessageAPI 但我在 Slack 中获得了原始内容 而不是渲染的表格 Slack 支持 Markdown 表格吗 还有其他方法可以在 Slack 中呈现表格数据吗 我知道 Sla
  • 选择要使用 Hspec 和堆栈运行的测试

    我编写了一系列测试 使用自动规格发现 http hspec github io hspec discover htmlHspec 的特点 我也在用stack https docs haskellstack org en stable REA
  • App Engine 忽略目录的符号链接

    我正在创建一个在 Google App Engine 上使用自定义 Flex 环境运行的应用程序 该应用程序使用多个 相对 符号链接指向项目中的其他目录 但不知何故 当我部署应用程序时 这些符号链接被忽略 看来gcloud工具在构建和部署应
  • 在 Android 中为 startActivityForResult() 生成 16 位唯一 ID

    我计划将生成的资源 ID 用于我的所有资源startActivityForResult 代码 以便我可以使用onActivityResult 在基类中 不必担心派生类是否使用相同的代码 不幸的是 代码似乎被限制为 16 位 而资源 ID 为
  • 如何在ionic 1中输入数字类型时只允许一位小数点

    我正在使用数字类型的输入 其中允许多个小数点 因此我尝试使用正则表达式不允许超过一个小数点 但即使在使用正则表达式之后 我也面临同样的问题 任何人都可以告诉我如何只允许ionic1 中数字类型输入中的一位小数 Html
  • 停止在提交表单时添加 URL 参数

    好吧 这可能是一个愚蠢的问题 但我正在尝试编写一个简单的 JavaScript 应用程序 请原谅我的术语 我对此很陌生 其中包含一个表单 但我只使用 HTML 来完成它和 JS 和 CSS 所以我使用 document getElement
  • didUpdateLocations 方法从未被调用

    我正在 iphone sdk4 0 上制作一个应用程序 其中更新位置方法从未被调用 我在下面给出了我的代码 请帮忙 提前致谢 id init super init obj UIApplication sharedApplication de
  • 检查 SQL 中的 GUID 是否为空

    如何检查存储过程中的参数是否为空 GUID SELECT CAST CAST 0 AS BINARY AS UNIQUEIDENTIFIER 那应该返回你的空指南 或者更短 节省一个演员 SELECT CAST 0x0 AS UNIQUEI
  • 将Mysql查询结果放入类内的数组中

    大家好 我正在尝试解决本主题中的问题 gt 从 Prestashop 自定义字段获取数据 https stackoverflow com questions 49487896 fetch data from prestashop custo
  • 如何发布Polymer 3.x自定义元素?

    我正在学习polymer3 x 我制作了一个虚拟聚合物元件 现在我想知道如何在线发布并在其他框架中使用它 例如 角度应用程序 我完成了中提到的要求https www webcomponents org https www webcompon
  • 如何格式化基于 Tabulator SELECT 的标头过滤器选项?

    我们正在使用制表符 4 8 3 并在一列上有一个基于 SELECT 的标题过滤器 除了我们尝试向某些选择选项添加一些格式之外 一切都很好 它们以预期的格式显示在选择下拉列表中 然而 一旦做出选择 所选文本就会以原始 html 未格式化 显示
  • 英特尔“退休”是什么意思?

    In the 英特尔手册 http www intel com content www us en architecture and technology 64 ia 32 architectures software developer
  • 出现错误无法读取未定义的属性“setState”

    我是 Reactjs 新手 我正在尝试做一些非常简单的事情 当用户更改文本区域内的文本时 更新渲染函数内的 div 有什么建议么 class HTMLEditor extends React Component constructor pr
  • OpenAI GPT-3 API:如何扩展 TL;DR 输出的长度?

    我想使用 OpenAI 的 TLDR 从 2 3 页的文章中生成 3 6 句话的摘要 我已经粘贴了文章文本 但输出似乎只停留在 1 到 2 句话之间 用于获取给定提示的 3 句话摘要的选项 您可以通过多种方式告诉 OpenAI API 您需
  • Mysql选择并显示两列

    我想提取存储在表的同一列中的两种类型的数据并将其显示在两列中 我做了很多搜索并做了很多测试 但没有任何作用 这可能很容易做到 这是我的桌子 id field id user id value 175 65 3 48 898418820126
  • Twilio 短信问题

    到目前为止 我一直在使用 Twilio 打电话 现在我希望能够有一个网络监控工具 可以在号码出现问题时发送短信 我想这样做 以便当 twilio 收到文本时 它会执行我放入其 URL 中的脚本 我真的不知道如何开始使用短信 与电话相比 它看
  • Kotlin - 在运行函数之前等待观察多个 LiveData

    我正在使用 viewModel 从房间数据库中提取实时数据 我有 2 个从 viewModel 中提取的 LiveData 然后我将运行一个函数从我的服务器中提取数据 我需要在运行从服务器获取信息的函数之前设置这两个值 因为这些值是帖子正文
  • Node+Passport.js + Sessions + 多个服务器

    护照很棒 我现在发现它处理会话的方式存在一些问题 一定是我用错了 登录 会话 我存储在数据库中的用户数据对我来说一切都很顺利 然而 我发现当我转移到生产环境 具有多个服务器的 EC2 上的云 时 我每次都会丢失登录会话 现在我很清楚这一点