RailsセッションのCookieにDomain等を指定する

RailsのセッションCookieにDomainを指定しようとして、少々苦労したのでメモ。なんでそんなことしたかったかというと、以下のようなサブドメインを運用していて、aのアクセスのために認証したら、bにアクセスしたとき認証情報引き継いでて欲しかったのです。

結論:config/environment.rbや config/environments/production.rbなどに、以下のようにかけばよい。

config.action_controller.session = {
  :session_domain => "example.com"
}


ついでにセキュアCookieを使いたければ、以下のようにすればOkぽい。

config.action_controller.session = {
  :session_secure => true,   
  :session_domain => "example.com"
}

ActionPack2.0.2の action_controller/session/cookie_store.rbの69行目あたりを見ると、他にも以下のようなのが設定できそう。

    • :session_key
    • :session_path
    • :session_domain
    • :session_expires
    • :session_secure

っていうか、今回やりたかったdomainとかpathとかそういう世界以外は「設定できるよー」っていう情報がたくさん転がっていたので、苦労はしなかったかなw

ついでに、同じソースのちょっと上をみると、セッションの整合性確認のために

    • :digest

なんかも設定できるのね・・(デフォルトはSHA1らしい)