我最近将我的 rails 3.2 应用程序升级到 rails 4.2。我面临新 Rails 4.2 设置的 cookie 已签名和加密的问题,我不会这样做,因为我的应用程序与其他 rails 3 应用程序交互。我想在 4.2 中重新引入创建 cookie 的旧方法。
问问题
643 次
1 回答
1
Rails 4 CookieStore默认加密 cookie 确实如此:
如果您设置了 secret_key_base,您的 cookie 将被加密。这比签名的 cookie 更进一步,因为加密的 cookie 不能被用户更改或读取。这是从 Rails 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 将像在 Rails 3 中一样保存在签名的jar 中。
于 2018-05-02T12:28:25.810 回答