如果在浏览器中禁用了cookie,则存储数据

时间:2011-09-01 07:46:35

标签: ruby-on-rails session cookies

我在我的网站上使用Rails 3。我的网站用户阻止我的网站在浏览器中存储cookie数据。

我的网站是公共部分,用户无需登录即可访问该网站。在那里,我需要暂时在session []中存储一些信息,直到下一个请求。

由于用户已禁用我网站的Cookie,因此我选择:active_record_store作为:session_store。即使这样做,我也无法从会话[]

成功存储和检索值
Cart::Application.config.session_store :active_record_store, :key => '_cart_session', :domain => :all

在这些情况下,我该怎么做才能在session []中存储值。请帮忙。

2 个答案:

答案 0 :(得分:2)

如果禁用了cookie,则无法使用会话,因为会话ID是使用cookie传输的。

您可以尝试以其他方式传输会话ID - 例如,在PHP中,每个表单和链接都附加一个参数:PHPSESSIONID。您可以使用相同的技术,并使您的链接看起来像这样:

<a href="/users/1?session_id=12345">

Rails will not allow you to use sessions without cookies,但我确信自己编写它不会太难。请务必考虑会话ID披露的安全隐患!

如果您对PHP处理会话的方式感兴趣,您可能希望看到PHP session documentation和两个问题:How do PHP sessions work when cookies are disabled?“{ {3}}“

答案 1 :(得分:0)

你可以

  1. 为每个用户创建唯一代码,并修改所有链接和表单以包含它。

  2. 用户数据存储在数据库中以及用于个性化的唯一代码。

  3. 当用户请求附带该唯一代码时,请应用个性化。
  4. 您无法为每个IP地址分配唯一代码,因为许多用户使用相同的IP地址,或者他们的IP地址可能会频繁更改。