私は一日中セッションについて読んでいますが、app.example.ioとexample.ioの間でセッションを共有する方法を誰かが明確に説明してくれることを願っています
サブドメインは技術的には完全に異なるドメインであり、ブラウザだけではないため、Access-Control-Allow-Credentialsヘッダーを使用して、パスポートの資格情報を渡す必要があります
上記は本当ですか?以下のようにセッションまたはCookieを構成することについて心配するのをやめ、あるドメインから別のドメインに資格情報を渡すことに集中する必要がありますか?
// I have been trying to configure the domain property to no avail
app.use(cookieSession({
key: 'example.sid',
secret: 'something',
cookie: {
path: '/',
domain: '.example.io',
maxAge: 1000
}
}));
24時間以上セッションを構成しようとしましたが、資格情報を渡す必要があると確信しています。それが本当の場合、私の質問は、passport.jsによって認証された資格情報をどのように渡すかです。
私のnode.jsサーバーはすべて1つのエクスプレスアプリを使用していますsubdomain/app
。サブドメインは、リクエストをプロキシするnpmサブドメインモジュールから取得されます。したがって、サブドメインとドメインは技術的にサーバー設定で同じセッションを共有しますか?
全体として、私は混乱していて、誰かが私のために空気をきれいにすることができれば安心します。
それで、いくつかの徹底的な調査の後、私はほとんどの部分でこれに頭を包みました。
私は、コンソールにそれを見たときにクッキーのドメインが期間のみを持っているので、私のすべてのサブドメインのための分析クッキーの作品をグーグルに気づいた.example.io
クッキーを見ながらアプリはのように見えた作成された表現MY app.example.io
&example.io
。したがって、明らかに.example.io
、両方のドメインのように見えるCookieドメインが必要でした。
私が見つけたセッションコードは、これに最適です。
app.use(session({
store: new RedisStore(),
key: 'example.sid',
secret: 'keyboard cat',
cookie:{ domain: '.example.io' }
}));
私はほとんど使用しようとしなかったkey
ので、それが役立つように見えるキーを設定し、ストアが何かを行う場合はIDKも設定しましたが、ライブサーバーにredisをインストールしてプロジェクトに含めましたが、それが違いを生むかどうかはわかりません。
また、Cookieに設定されているドメインにが含まれていることにも注意してください.example.io
。これはうまくいきました、私は安心しました、私は私がだまされていないことを確認するためにテストを続けます。
これが誰かを助けることを願っています!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加