【问题标题】:Rack session key too long for memcached机架会话密钥对于 memcached 来说太长了
【发布时间】:2011-04-17 12:52:45
【问题描述】:

我正在运行 Rails 3,配置为使用 memcached 进行会话存储。我有以下设置:

development.rb

config.cache_store = :mem_cache_store

session_store.rb

Foo::Application.config.session_store :mem_cache_store, :key => '_foo_session'

我可以很好地启动应用程序,当我转到任何页面时都会收到以下错误:

ArgumentError (key too long "rack:session:__really_long_session_key__"):

我意识到 memcached 密钥的限制是 255。我该如何解决这个问题,或者我做错了什么?

【问题讨论】:

    标签: ruby-on-rails memcached rack


    【解决方案1】:

    您是否有可能从 cookie 存储切换或在同一域(例如 localhost)上运行其他 cookie 会话存储应用程序?

    在这种情况下,cookie 会话存储负责巨大的 session_id 字符串(因为它实际上将整个会话存储在其中)。只需删除您的会话 cookie,就可以了。

    【讨论】:

      【解决方案2】:

      您几乎肯定会看到这一点,因为您正在从 cookie 存储切换到 memcached。您的浏览器仍然有旧的会话 cookie,带有长 ID。您需要从浏览器中删除此 cookie,问题就会消失。

      如果您在生产站点上从 cookie 存储切换到 memcached,这将是一个问题,因为您无法控制用户的浏览器。您可能需要更改会话密钥以避免在这种情况下出现问题。

      【讨论】:

        【解决方案3】:

        如果您的“密钥”超过 255 个字符,则听起来您做错了什么。为什么你的会话密钥那么长? MD5 或 SHA1 有什么问题?

        【讨论】:

        • 我似乎无法弄清楚这个会话密钥的来源。我没有在我的应用程序中任何地方指定的错误中显示该会话密钥。 :key => '_foo_session' 不应该是关键吗?
        • @Jay Bala - 我不确定它的设置位置。我从未使用过 Rack
        猜你喜欢
        • 2019-08-04
        • 2020-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-02
        • 1970-01-01
        • 1970-01-01
        • 2018-01-26
        相关资源
        最近更新 更多