我应该在Rails 4中使用cookie和会话吗?

时间:2014-01-26 18:47:49

标签: ruby-on-rails session cookies

我正在构建一个示例应用程序,我已经到了一个点,我正在尝试创建一个模拟购物车。当按下添加到购物车按钮时,我可以成功地将值存储在cookie(产品ID)中,但我不确定这是否是正确的方法?我正在使用的产品列表来自目录API调用,我没有将它们存储到我自己的数据库中。所以我的想法是在按下按钮时将产品ID存储在cookie中,然后从API中找到与产品代码相关的其他相关数据,并将其放入购物车行。

cookies[:get_prod_id] = @prod_id

将使用

session[:get_prod_id] = @prod_id
好吗?我为会话设置了CookieStore,当我加载应用程序时,我发现有一个_myapp_sessions cookie,但我对如何从该cookie中获取ID感到困惑

1 个答案:

答案 0 :(得分:0)

Cookies始终存储在客户端计算机上。存储session信息的位置取决于应用的配置。例如,要存储数据库,请在config / initializers / session_store.rb中设置它:

YourApp::Application.config.session_store :active_record_store

运行rails g active_record:session_migration创建表格,然后重新启动服务器。

如果您使用默认的::cookie_store,则会对内容进行签名,以使其无法被篡改。这意味着可以通过为其用户ID设置cookie来识别用户。使用常规cookie执行此操作可以使其成为另一个用户。仅对常规cookie使用非特定于当前会话的不敏感信息,例如用户选择的语言:

cookie[:lang] = 'en-US'