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らしい)