机架会话密钥对于memcached来说太长了

时间:2010-09-26 22:20:56

标签: ruby-on-rails memcached rack

我正在运行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.我怎么能绕过这个,或者我做错了什么?

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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