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

时间:2013-05-04 17:56:22

标签: ruby-on-rails session cookies

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

但是,当用户关闭浏览器然后再次打开时,会话ID 已更改。他把所有物品丢在车里。

我怀疑我可以通过在Cookie中保存会话ID 来提供此功能。

我是对的吗?

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

3 个答案:

答案 0 :(得分:5)

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

第4节和第5节涵盖了会话和Cookie,可以让您更深入地了解 如何使用它们,将更容易应对未来的挑战。

我还会查看Ruby on Rails ActionDispatch :: Cookies<对象文档 (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 }

答案 1 :(得分:3)

cookies[:your_cookie] = {
    :value => "your_cookie_value",
    :expires => 100.years.from_now
}

了解更多详情,check it out

答案 2 :(得分:2)

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

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

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

有关会话的所有配置选项的说明,请参阅Rails 3 additional session configuration options (key, expires_after, secure)

你会想看看:expire_after,例如

:expire_after => 24.hours

(见Setting session timeout in Rails 3