2010-09-26 42 views
5

我正在运行Rails 3配置为使用memcached会话存储。我有以下设置:机架会话密钥太长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.我该如何解决这个问题,或者我是否做错了什么?

回答

9

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

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

0

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

+0

我似乎无法弄清楚这个会话密钥来自哪里。我的应用程序中没有指定错误中指定的会话密钥。是不是':key =>'_foo_session''应该是关键? – 2010-09-26 22:38:31

+0

@Jay Bala - 我不确定它在哪里设置..我从来没有使用Rack – 2010-09-26 22:39:55

1

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

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

相关问题