我目前有两个独立的Node应用程序运行在两个不同的端口上,但它们共享相同的后端数据存储。我需要在这两个应用程序之间共享用户会话,以便当用户通过一个应用程序登录时,他们的会话可用,并且他们似乎已经登录到另一个应用程序中。在这种情况下,这是一个面向公众的网站和一个管理后端。
我们的设置如下:
- 使用Express的Node
- 使用Local Strategy处理身份验证
- 使用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,以便在不同子域之间共享会话?
*
,对吧?那么,只需要前导点。我认为这就是使 cookie 可以从不同的子域中读取的原因。让我知道,我可以提供它作为答案。 - Linus Thiel