我正在开发一个基于 session_id 的简单购物车,即用于确定用户购物车项目使用 session_id。
但是当用户关闭浏览器然后再次打开它时,会话 ID已更改。他丢失了购物车中的所有物品。
我怀疑我可以通过在 cookie 中保存会话 ID来提供这样的功能。
我对吗?
无论如何,我的问题是如何提供一种功能,即使在关闭浏览器后也允许用户获取他们的购物车物品?
我正在开发一个基于 session_id 的简单购物车,即用于确定用户购物车项目使用 session_id。
但是当用户关闭浏览器然后再次打开它时,会话 ID已更改。他丢失了购物车中的所有物品。
我怀疑我可以通过在 cookie 中保存会话 ID来提供这样的功能。
我对吗?
无论如何,我的问题是如何提供一种功能,即使在关闭浏览器后也允许用户获取他们的购物车物品?
我建议阅读 Rails 指南:动作控制器概述 ( http://guides.rubyonrails.org/action_controller_overview.html )。
第 4 节和第 5 节涵盖会话和 Cookie,让您更深入地了解如何使用它们,并更容易应对未来的挑战。
我还会查看 Ruby on Rails ActionDispatch::Cookies < Object Documentation ( http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html )
此资源中列出了您正在寻找的控制器代码示例。这是一个例子:
# 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
(在这里找到:在 Rails 3 中设置会话超时)