我正在运行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.我怎么能绕过这个,或者我做错了什么?
答案 0 :(得分:9)
您几乎肯定会看到这一点,因为您正在从cookie存储区切换到memcached。您的浏览器仍然具有旧会话cookie,具有长ID。您需要从浏览器中删除此cookie,问题就会消失。
如果您在生产网站上从cookie存储区切换到memcached,这将是一个问题,因为您无法控制用户的浏览器。您可能需要更改会话密钥以避免在这种情况下出现问题。
答案 1 :(得分:1)
您是否有可能从cookie商店切换或在同一域(例如localhost)上运行其他cookie会话商店应用程序?
在这种情况下,cookie会话存储负责巨大的session_id字符串(因为它实际上将整个会话存储在其中)。只需删除你的会话cookie就可以了。
答案 2 :(得分:0)
如果你的“密钥”超过255个字符,那听起来好像你做错了什么。为什么你的会话密钥长了? MD5或SHA1有什么问题?