【发布时间】:2018-10-12 01:05:37
【问题描述】:
我继承了使用基于 cookie 的会话存储的 rails 站点的管理。我一直收到错误,因为 cookie 太大(“cookie 长度应小于或等于 4096 个字符。”),因此我试图切换到基于缓存的会话存储。 (旁白:这主要是由于 Microsoft Graph 的访问令牌是 1,798 个字符。生成的 cookie 是 3,000 个字符。这看起来对吗?即使 cookie 只有 1,798 个字符,我想我想要将其存储在服务器上,对吗?)
我一直在阅读的所有内容都表明,此切换应该很简单:将会话存储设置从 :cookie_store 更改为 :cache_store。这是新的session_store.rb:
Rails.application.config.session_store :cookie_store, key: '_site_session'
Rails.application.config.session_store :cookie_store, key: '_access_token'
Rails.application.config.session_store :cookie_store, key: '_workbook_id'
执行此操作后,我现在看到浏览器中的“_workbook_id”cookie 的大小下降到 44,看起来不错。但是,我现在无法登录该网站。当我这样做时,我收到错误:ActionController::InvalidAuthenticityToken at /login。我已经稍微跟踪了身份验证过程并验证了问题(我认为)是 Rails 在 request_forgery_protection.rb 中运行 valid_authenticity_token 并使用不匹配的令牌。我不知道为什么,或者下一步去哪里。我承认我是一个 Rails 新手,正在修补我还不理解的东西。
注意:我在发出登录请求时也看到了一堆异常:
Exception raised: [LoadError]: cannot load such file -- devise/sessions_helper.rb
Exception raised: [LoadError]: cannot load such file -- devise/sessions_helper.rb
Exception raised: [LoadError]: No such file to load -- devise/sessions_helper.rb
Exception raised: [AbstractController::Helpers::MissingHelperError]: Missing helper file helpers/devise/sessions_helper.rb
Exception raised: [LoadError]: cannot load such file -- users/sessions_helper.rb
Exception raised: [LoadError]: cannot load such file -- users/sessions_helper.rb
Exception raised: [LoadError]: No such file to load -- users/sessions_helper.rb
Exception raised: [AbstractController::Helpers::MissingHelperError]: Missing helper file helpers/users/sessions_helper.rb
Exception raised: [NameError]: uninitialized constant Session
Exception raised: [ArgumentError]: no receiver is available
Exception raised: [ArgumentError]: no receiver is available
Exception raised: [NameError]: uninitialized constant Users::Session
Exception raised: [NameError]: uninitialized constant Session
Exception raised: [NameError]: uninitialized constant Session
Exception raised: [ArgumentError]: no receiver is available
Exception raised: [ArgumentError]: no receiver is available
Exception raised: [NameError]: uninitialized constant Users::Session
Exception raised: [NameError]: uninitialized constant Session
不过,它们同时出现在 cookie 存储和缓存存储中,所以我不认为这就是问题所在。
【问题讨论】:
标签: ruby-on-rails