我继承了使用基于cookie的会话存储的Rails站点的管理。由于Cookie太大(“ Cookie长度应小于或等于4096个字符。”),我一直收到错误消息,因此我试图切换到基于缓存的会话存储。 (另外:这主要是由于Microsoft Graph的访问令牌为1,798个字符。结果cookie为3,000多个字符。这看起来正确吗?即使cookie仅为1,798 ish,我想我也想要将其存储在服务器上,对吗?)
我所阅读的所有内容都表明此切换应该很容易:将会话存储设置从: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在valid_authenticity_token
中使用不匹配的令牌运行request_forgery_protection.rb
。我不确定为什么会这样,或者下一步要去哪里。我承认我是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存储和缓存存储中,所以我不认为是问题所在。
答案 0 :(得分:1)
可能过期了。尝试更新session_store.rb
文件
# config/init../session_store.rb
Rails.application.config.session_store :cookie_store,
:key => '_localhost_session',
:compress => true,
:pool_size => 10,
:expire_after => 1.year