ruby-on-rails - Rails 4.2:如何禁用 cookie 加密
问题描述
我最近将我的 rails 3.2 应用程序升级到 rails 4.2。我面临新 Rails 4.2 设置的 cookie 已签名和加密的问题,我不会这样做,因为我的应用程序与其他 rails 3 应用程序交互。我想在 4.2 中重新引入创建 cookie 的旧方法。
解决方案
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 中。
推荐阅读
- apache-spark - 加载平面文件时指定最大列宽
- java - Java休眠:访问外键
- c# - 构造函数总是存在于类中吗?
- xcode - 似乎无法将 UIWebView 升级到 WKWebView
- javascript - 在 JSDoc 中如何描述在其数据集中具有某些属性的 HTMLElement (DOMStringMap)?
- android - 虽然更新状态无法在渲染中绑定更新的值
- angular - 资源上下文中使用的不安全值 (iframe)
- python - 在数据框中使用熊猫在随机位置插入特殊字符
- google-sheets - 如何获取最新值,只要最新状态不符合工作表上的条件(通过查询公式)
- swift - SwiftUI 和 USerDefaults:更新没有 ForEach 的变量