我目前有两个独立的节点应用程序在两个不同的端口上运行,但共享相同的后端数据存储。我需要在两个应用程序之间共享用户会话,以便当用户通过一个应用程序登录时,他们的会话可用并且他们似乎已登录到另一个应用程序。在这种情况下,它是一个面向公众的网站和一个管理后端。
我们的设置如下:
- 带快递的节点
- 护照正被用于通过本地策略处理身份验证
- 我们使用 connect-redis 允许我们通过 redis 共享会话。
- 我们的域名如下所示:www.mydomain.com 和 adm.mydomain.com
两个应用程序的会话内容(和 redis)的配置是相同的:
session: {
options: {
secret: "my secret",
cookie: {
domain: "mydomain.com",
maxAge:1000*60*60*24
}
},
redis: {
host: 'my host',
maxAge: 86400000,
secret: "my secret"
}
}
app.js 中会话内容的配置如下所示:
if ( app.settings.env === "production" ) {
session.options.store = new RedisStore(session.redis);
}
app.use(express.session(session.options));
app.use(passport.initialize());
app.use(passport.session({ secret: 'a different secret' }));
我期望它做什么:允许我们在两个应用程序之间的 cookie 中看到相同的会话 id。
所以我的问题是:如何设置 express、redis 和 passport,以便您可以在不同的子域之间共享会话?