5

ときどき変更を壊すと、ActionDispatch :: Session::SessionRestoreError例外が発生します。無効なセッションを自動的にクリアするために、次のようなことができると便利です。

class ApplicationController < ActionController::Base
  rescue_from ActionDispatch::Session::SessionRestoreError do |exception|
    reset_session
    redirect_to :home
  end
end

これは機能しません-例外が下位のActionDispatchレイヤーで発生しているためだと思います。これらのエラーから回復する方法はありますか?

4

1 に答える 1

7

できる。堅牢なソリューションは次のとおりです。

  1. 開けるconfig/initializers/secret_token.rb
  2. の値を変更しますYourApp::Application.config.secret_token。たとえば、最後の文字を別のものに置き換えます。
  3. Rails サーバーを再起動する

問題の問題を直接解決するわけではなく、自動化するのは比較的難しく、あまり良い考えではありません (アプリ構成の自動書き換え) が、(高価な) オプションになる可能性があることはわかっています。

セッションに大きなチャンクが書き込まれることを経験したので、セッションを大規模なデータストレージと照合してデータベースにスワップすることもできます.

于 2012-12-03T23:29:54.137 に答える