現在、2つの異なるポートで2つの別々のノードアプリを実行していますが、同じバックエンドデータストアを共有しています。2つのアプリ間でユーザーセッションを共有して、ユーザーが1つのアプリからログインしたときにセッションが利用可能になり、他のアプリにログインしているように見えるようにする必要があります。この場合、それは公開されているWebサイトと管理バックエンドです。
セットアップは次のとおりです。
- Expressのノード
- パスポートは、ローカル戦略で認証を処理するために使用されています
- 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' }));
私が期待すること:2つのアプリ間のCookieに同じセッションIDが表示されるようにします。
だから私の質問は:異なるサブドメイン間でセッションを共有できるように、エクスプレス、redis、パスポートを設定するにはどうすればよいですか?