【问题标题】:Storing data if cookies are disabled in browser如果在浏览器中禁用 cookie,则存储数据
【发布时间】:2011-09-01 07:46:35
【问题描述】:

我正在为我的网站使用 Rails 3。我的网站用户曾阻止我的网站在他们的浏览器中存储 cookie 数据。

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

由于用户为我的站点禁用了 cookie,我为 :session_store 选择了 :active_record_store。即使这样做了,我也无法从会话中成功存储和检索值[]

Cart::Application.config.session_store :active_record_store, :key => '_cart_session', :domain => :all

在这些情况下,我可以做些什么来将值存储在 session[] 中。请帮忙。

【问题讨论】:

    标签: ruby-on-rails session cookies


    【解决方案1】:

    如果禁用 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?""do sessions work when cookies are disabled?"。

    【讨论】:

      【解决方案2】:

      你可以

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

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

      3. 当用户请求附带该唯一代码时,应用个性化。

      您不能为每个 IP 地址分配唯一代码,因为许多用户使用相同的 IP 地址,或者他们的 IP 地址可能会经常更改。

      【讨论】:

        猜你喜欢
        • 2012-06-12
        • 2018-02-16
        • 2021-10-13
        • 2021-06-29
        • 2021-06-04
        • 2015-02-27
        • 2018-10-30
        • 1970-01-01
        • 2020-05-05
        相关资源
        最近更新 更多