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 回答