(apply-generic op . args)

教育者, 将軍, 栄養士, 心理学者, 親はプログラムする. 軍隊, 学生, 一部の社会はプログラムされる. - 計算機プログラムの構造と解釈 序文

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
ググると色々と出てきますよ。