Ruby on RailsでSessionをDBで管理する方法。
またもメモ書き。
Railsは2.0からセッションをクッキーに保存するのがデフォルトになりました。
正し、クッキーは4KBが上限となっておりアプリケーションの構造上、4KBだと厳しい場合もあるかと思います。
そんな時はActiveRecordを使用して、SessionをDBに保存できます。
まずは、DBにSessionTableを作成します。
#rake db:session:create
#rake db:migrate
次に、RailsにSessionをクッキーではなくDBで管理しろと教えてやります。
config/environment.rbに以下を追記します。
config.action_controller.session_store = :active_record_store
これで、例えばログインシステムを作ってログインすると!
ActionController::InvalidAuthenticityToken
こんなエラーがでます。
これはCSRF (Cross-Site Request Forgery)っていうのを防止しています。
CSRFとは(http://e-words.jp/w/CSRF.html)
このエラーの回避方法は、app/controllers/application_controller.rbに以下を追記します。
protect_from_forgery :secret => 'セキュリティトークン文字列'
これでOKです。
かなりはしょっているので、もっと知りたい、上手く行かない!って人は
ActionController::InvalidAuthenticityToken
でググると色々と出てきますよ。