odeの開発メモ日記

プログラマーやってます。今までの道のり ポケコンbasic→C(DirectX5 ネットやろうぜ)→Perl(ちょろっと)→Java→C#→Ruby→Android(Java)

セッションがタイムアウトしてる状態でpostした場合

セッションをdbに格納してる場合は注意しないといけなそうです。

例えば検索フォームを表示したままで放置して
その後タイムアウトしてるのに検索をした場合(postする)
InvalidAuthenticityTokenになりました。

挙動

セッションのストア先により動作が変わるみたいです

  • dbにセッションを格納
    • InvalidAuthenticityToken発生
  • memcacheにセッションを格納
    • 特に問題なくactionに進む。処理がかけるのでここでタイムアウトしました画面を表示できるので問題なし。
  • クッキーセッションを格納
    • 使ってないのですが、ブラウザ閉じるまでタイムアウトしないので問題ないはず。

InvalidAuthenticityTokenをどうするか

コントローラーに制御がうつらないからどうしようもなさそうな気がする。
railsに手をいれればできるだろうけど)
422.htmlにタイムアウトしました系の文言表示するしかなさそう。(微妙ですが)
本来の目的のメッセージではないですが、そもそも普通の人は見ることはないってことで。。

実行環境

rails(2.1.2)