読者です 読者をやめる 読者になる 読者になる

サブドメイン間のセッション共有

複数のサブドメイン間でセッションを共有させる方法を紹介します。
1つのアカウントで複数のアプリケーションを使えるようにしたいときなどに必須となってきます。

たびたび例に出して申し訳ないんですが、私が作っているプロジェクトBundleBoxもサブドメイン間でセッションを共有させるように作られています。

http://account.bundlebox.jp/
http://kojinbaibai.bundlebox.jp/

これらはドメインは別ですが、同一のセッションを共有しています。

やり方は非常に簡単です。
account.bundlebox.jpドメインにセッション情報を保存するのではなく、bundlebox.jpドメインに保存するように設定するだけです。

perlのCatalystでの例を示します。
共有したいアプリケーションのconfigファイルでセッション設定を以下のようにしてください。

session => {
    cookie_name    => "BundleBox",
    cookie_domain  => "bundlebox.jp",
    storage        => "/var/www/bundlebox/session/session_data",
    namespace      => "production",
},

もちろんそれぞれの環境に合わせてくださいね。

$user_id = $c->session->{user_id};

こんな感じでログイン情報を共有できます。

広告を非表示にする