2016-06-21 23 views
9

メインドメインとすべてのサブドメインの間でセッションCookieを共有する必要があります。私はexpressjsフレームワークに基づいて2つのnodejsサービスがあります。利用可能なサブドメインCookieにアプリケーションを設定するにはどうすればよいですか?

// example.local 

    ... 
    app.use(session({ 
     cookie: { 
      domain: "example.local" 
     } 
     , key: 'sid' 
     , secret: '[my secret]' 
     , saveUninitialized: true 
     , resave: true 
     , store: new RedisStore({ 
      host: 'localhost', 
      port: 6379 
     }) 
    })); 

// blog.example.local 

    ... 
    app.use(session({ 
     // what should I write here? <--------- 
    })); 

は、だから私の質問は、私はexample.localの既存のクッキーへのアクセスを得るためにblog.example.localのセッション構成で書くべき何ですか?

EDIT:@yeinielが示唆するよう、私は次のようにblog.example.localに同じ設定を使用する必要があります。

// blog.example.local 

    ... 
    app.use(session({ 
     cookie: { 
      domain: "example.local" 
     } 
     , key: 'sid' 
     , secret: '[my secret]' 
     , saveUninitialized: true 
     , resave: true 
     , store: new RedisStore({ 
      host: 'localhost', 
      port: 6379 
     }) 
    })); 

は、それは十分ですか私はそれを最適化することができますか?

答えて

6

基本的に2つのことが必要です:すべてのサーバー(Cookie設定だけでなく、すべてのセッション設定にストアを含む)で同じ設定を使用し、サイト間の共通ドメインに対するCookieドメイン構成ポイントを確認します。

+0

だから私は 'example.local'の設定を' blog.example.local'にコピーして貼り付けする必要がありますか? – Erik

+0

はい、それだけです。 – yeiniel

1

私は現在、すべてのアプリはあなたがアプリケーションを別のサーバー上にある特別な場合は、お使いのセッションデータを維持するためにlocalhostを使用することはできませんセッション

app.use(session({ 
store: redisStore, 
secret: config.secret, 
resave: true, 
rolling: true, 
saveUninitialized: false, 
name: config.cookie_name, 
cookie: { 
    domain: config.cookie_domain_name, \\ .website.tld 
    secure: false 
} 

に同じ設定を持つ同様の設定 を管理しています。すべてのアプリケーションがアクセスできるセッションデータ用の中央ストレージが必要になります。

+0

はいセッション用にストレージを分割する必要があることはわかっていますが、すべてのサブドメインが1台のマシンに存在するようになりました。だから基本的な質問は、セッションの設定についてでしたが、指してくれてありがとう!あなたは@Lalit Goswamiの答えについて何をしていますか? – Erik

+0

すべてのサブドメインが同じマシン上にある必要はありません。セッションのみが集中的に格納されます。アプリは、任意の数のマシンに置くことができます。 また、Set-Cookieを送信すると、サブドメインが別々に扱われるのか、メインドメインの下で扱われるのかが決まります。 – mayankbatra

2

私はミドルウェアでのごクッキー属性がblog.example.localexample.local

ため

cookie: { 
     domain: "example.local", 
     path:'/' 
} 

ため

cookie: { 
     domain: ".example.local", 
     path:'/' 
} 

、このようにされるべきだと思います

あなたがうまくいくことを願っています。

+0

本当ですか?私は、すべての一般的なドメインとサブドメインにcookieを共有する必要がある場合、私は 'domain:" bexample.local " – Erik

関連する問題