我有鸡肉和鸡蛋的问题。
我正在使用 Node.js HTTPServer 将 Web 请求路由到不同的 Node.js 工作人员,具体取决于他们在请求 header 中发送的 Connect.SID cookie。
我的每个 Node.js 工作人员都使用 Connect/Express 并在请求第一次连接时分配 Connect.SID cookie。
问题
显然,如果请求的 Connect.SID 未在该 Node 实例中注册,则 Connect 会分配一个新 ID。
所以,我有一个新的 Connect.SID。我的 HTTP 代理记录 ID 12345 并将其路由到工作人员 #5。 worker #5 将新 ID 56344 发送回浏览器。下一个浏览器请求 - HTTP 代理看到一个全新的 ID - 56344 - 记录它并发送给 Worker #6。 worker #6 看到新的 SID 并......
Connect Session 中间件太...简单...

app.use(express.cookieParser());
app.use(express.session({ secret: "niceTry", cookie: { /* ... */ } }));
有没有办法将逻辑注入(inject)到新 session ID 的分配中,以便在已经存在未注册但有效的 Connect.SID 时跳过它?

最佳答案

您是否考虑过在 Node/Express 中使用分布式 session 管理(即 Redis)?这应该可以防止有效的 session 锁定问题。

关于Node.js/Connect 使用现有的 Connect.SID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20186750/

10-16 18:20