偶尔断开更改会导致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层.有没有办法从这些错误中恢复?
它可以.强大的解决方案如下:
config/initializers/secret_token.rbYourApp::Application.config.secret_token,例如将最后一个字符替换为其他字符我知道它并没有直接解决问题并自动化它相对困难而且不是一个好主意(自动编写应用程序配置),但它可能是一个(昂贵的)选项.
我通过将大块写入会话来体验它,因此您还可以确保针对任何大量数据存储检查会话并将其交给数据库.