在Rails 3中,将数据存储在cookie中与将数据存储在会话中(会话存储设置为默认值CookieStore)有什么区别?

例如

cookie[:foo] = 'bar'

# MyApp::Application.config.session_store :cookie_store, key: '_myapp_session'
session[:foo] = 'bar'

据我所知,两者最终都存储在客户端cookie中.

你什么时候会 Select 使用其中一种而不是另一种?

谢谢

推荐答案

Rails 3的主要区别在于,当使用cookie[:foo] = 'bar'时,用户可以看到cookie的值,即'bar'.使用session[:foo] = 'bar'时,该值将由rails加密并存储在_myapp_session cookie中.

当您想要存储的信息未绑定到会话时,例如当用户 Select 首选语言时,您将使用cookie[]格式.

当您想要存储与当前会话相关的信息时,您可以使用session[]格式,例如用户的id.

From Rails 4 cookies became encrypted by default.

Ruby-on-rails相关问答推荐

在has_many关系中由两个条件 Select

Ubuntu Webhooks无法读取安装的正确RVM Ruby

Rspec期望()与期望{}

I18n 用于特定于模型的 Rails 提交按钮

验证以确保唯一性但忽略空值?

rake assets:precompile try 连接到数据库

使用 RSpec 和 Capybara (Rails) 测试重定向

从 Rails 生成 PDF

simple_forms 自定义数据属性

bundle和gem安装的区别?

升级到设计 3.1 => 获取重置密码令牌无效

activerecord 查找所有未包含在数组中的内容

Rails 4 迁移:如何重新排序列

删除链接在 Rails 3 视图中发送Get而不是Delete

如何在 Ruby 中创建一个新的 Date 实例

将图标添加到 Rails 应用程序

在 Rails 应用程序中处理大文件上传的最佳方法是什么?

获取完整的 rails 控制器名称,包括命名空间

rails respond_to format.js API

Rails:您已经激活了 rake 10.3.1,但您的 Gemfile 需要 rake 10.2.2 (Gem::LoadError)