Ruby on rails Rails 3会议及会议;cookie如何持久化会话id cookie

Ruby on rails Rails 3会议及会议;cookie如何持久化会话id cookie,ruby-on-rails,session,cookies,Ruby On Rails,Session,Cookies,我正在开发一个基于会话id的简单购物车,即用于确定会话id使用的用户购物车项目 但当用户关闭浏览器,然后再次打开它时,会话id将被更改。他把所有的东西都丢在车里了 我怀疑在cookie中保存会话id时可以提供这样的功能 我说得对吗 我的问题是,如何提供一种功能,允许用户在关闭浏览器后也可以获取购物车项目?Rails默认情况下将会话存储在cookie中。你可以影响 cookie在重新启动浏览器后仍然有效(请参见下文) 浏览器之间不共享cookie。永远 如果您想使用Opera查看刚刚在Firefo

我正在开发一个基于会话id的简单购物车,即用于确定会话id使用的用户购物车项目

但当用户关闭浏览器,然后再次打开它时,会话id将被更改。他把所有的东西都丢在车里了

我怀疑在cookie中保存会话id时可以提供这样的功能

我说得对吗


我的问题是,如何提供一种功能,允许用户在关闭浏览器后也可以获取购物车项目?

Rails默认情况下将会话存储在cookie中。你可以影响 cookie在重新启动浏览器后仍然有效(请参见下文)

浏览器之间不共享cookie。永远

如果您想使用Opera查看刚刚在Firefox中创建的购物车,您需要以某种方式向商店进行身份验证,例如使用用户名和密码

有关会话的所有配置选项的说明,请参阅

你会想看看:例如,过期后

:expire_after => 24.hours
(可在此处找到:)


有关更多详细信息,我建议阅读Rails指南:Action Controller Overview()

第4节和第5节介绍了会话和cookie,将使您更深入地理解 并将使其更容易应对未来的挑战

我还想看看RubyonRails的ActionDispatch::Cookies<对象文档 ()

此资源中列出了您正在查找的控制器代码示例。以下是一个例子:

# Sets a cookie that expires in 1 hour.
cookies[:login] = { :value => "XJ-122", :expires => 1.hour.from_now }

谢谢,很清楚。但我不适用于不同的浏览器。例如,我在Firefox中向购物车添加了一些项目,然后关闭Firefox并打开Opera。不幸的是,在Opera中,我没有看到Firefox中添加的项目。我很困惑。从一方面来说,默认情况下,我在会话中保留的所有数据(会话[:some_key]=some_value)也在cookie的用户端保留。另一方面,Rails提供了一种在cookie中存储数据的方法,比如cookie[:some_key]=some_value。如果我可以在会话[]中存储数据,为什么要在cookie[]中存储数据?一些Rails应用程序不使用会话,但它们可能仍希望在用户浏览器中存储一些信息,这就是cookie方法存在的原因。因此..每当控制器更改进入会话或自动进入会话的内容时,我都必须更新cookie?
# Sets a cookie that expires in 1 hour.
cookies[:login] = { :value => "XJ-122", :expires => 1.hour.from_now }