【问题标题】:Rails 4.2 : How disable encryption for cookiesRails 4.2:如何禁用 cookie 加密
【发布时间】:2018-10-12 05:31:53
【问题描述】:
我最近将我的 rails 3.2 应用升级到 rails 4.2。我面临新 Rails 4.2 设置的 cookie 已签名和加密的问题,我不会因为我的应用程序与其他 rails 3 应用程序交互而不会这样做。
我想在 4.2 中重新引入创建 cookie 的旧方法。
【问题讨论】:
标签:
ruby-on-rails
session
cookies
ruby-on-rails-4.2
rails-4-upgrade
【解决方案1】:
Rails 4 CookieStore 默认加密 cookie 是真的:
如果您设置了 secret_key_base,您的 cookie 将被加密。这
在加密 cookie 中比签名 cookie 更进一步
用户不能更改或阅读。这是默认开始于
导轨 4。
似乎无法通过配置选项将其关闭,因此一种方法是不要设置secret_key_base。
另一种方法是使用重新定义的CookieStore#cookie_jar 方法定义您的自定义会话存储:
class ActionDispatch::Session::MyCustomStore < ActionDispatch::Session::CookieStore
private
def cookie_jar(request)
request.cookie_jar.signed
end
end
在config.rb:
config.session_store :my_custom_store
这样,您的 cookie 将保存在 signed jar 中,就像在 Rails 3 中一样。