代码之家  ›  专栏  ›  技术社区  ›  Jey Balachandran

机架会话密钥对于memcached太长

  •  5
  • Jey Balachandran  · 技术社区  · 14 年前

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

    开发RB

    config.cache_store = :mem_cache_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。我怎么能避开这个问题,还是我做错了什么?

    3 回复  |  直到 13 年前
        1
  •  9
  •   Steve Madsen    13 年前

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

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

        2
  •  1
  •   jeanmartin    13 年前

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

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

        3
  •  0
  •   Mitch Dempsey    14 年前

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