Rails 3 session & cookie 如何持久化会话 id cookie



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

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

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

我说的对吗?

无论如何我的问题是如何提供一个功能,允许用户获得他们的购物车项目,即使关闭浏览器后?

我推荐阅读Rails指南:动作控制器概述(http://guides.rubyonrails.org/action_controller_overview.html)。

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

我还会检查Ruby on Rails ActionDispatch::Cookies

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

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

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

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

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

请参阅Rails 3额外的会话配置选项(key, expires_after, secure),了解会话的所有配置选项的描述。

您将需要查看:expire_after,例如

:expire_after => 24.hours

最新更新