是否可以救出ActionDispatch :: Session :: SessionRestoreError?

Kri*_*aun 5 ruby-on-rails

偶尔断开更改会导致ActionDispatch :: Session :: SessionRestoreError异常.能够做这样的事情来自动清除无效会话会很棒:

class ApplicationController < ActionController::Base
  rescue_from ActionDispatch::Session::SessionRestoreError do |exception|
    reset_session
    redirect_to :home
  end
end
Run Code Online (Sandbox Code Playgroud)

这不起作用 - 我假设因为异常发生在较低的ActionDispatch层.有没有办法从这些错误中恢复?

Ain*_*vri 7

它可以.强大的解决方案如下:

  1. 打开 config/initializers/secret_token.rb
  2. 更改值YourApp::Application.config.secret_token,例如将最后一个字符替换为其他字符
  3. 重新启动Rails服务器

我知道它并没有直接解决问题并自动化它相对困难而且不是一个好主意(自动编写应用程序配置),但它可能是一个(昂贵的)选项.

我通过将大块写入会话来体验它,因此您还可以确保针对任何大量数据存储检查会话并将其交给数据库.

  • 很好 - 很长一段时间没有这个问题,但很高兴知道有一些事情可以做,即使它是手动的. (2认同)