我目前有两个独立的节点应用程序在两个不同的端口上运行,但共享相同的后端数据存储。我需要在两个应用程序之间共享用户会话,以便当用户通过一个应用程序登录时,他们的会话可用,并且他们似乎登录到另一个应用程序。在这种情况下,它是一个面向公众的网站和管理后端。节点应用程序之间的共享会话?
我们的设置是这样的:用快递
- 节点被用来处理身份验证与本地战略
- 我们使用连接,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' }));
我希望它做什么:让我们看到同样的SESS在两个应用程序之间的Cookie中添加ion id。
所以我的问题是:如何设置express,redis和护照,以便您可以让会话跨不同的子域共享?
我想你可能需要:
所以,这样的事情会为当前主1.10.1工作将cookie域指定为'“.mydomain.com”' - 注意前面的'.'。没有“*”的 –
?我们昨天在测试中使用了“* .mydomain.com”,但似乎没有奏效。 今天早上我会试试看看结果是什么。 – jpittman
你输入了一个'*',对吧?在那种情况下,是的,只是最重要的点。我认为这就是使Cookie可以从不同子域读取的原因。让我知道,我可以提供它作为答案。 –