Rails,CookieStore与ActiveRecordStore

时间:2010-08-12 15:47:29

标签: ruby-on-rails activerecord store cookiestore

我目前正在遇到一个奇怪的问题,我们的用户正在退出。我无法明确地重现它。

Rails应用程序正在使用默认的CookieStore。

我最初的假设是以某种方式 cookie中的会话数据,甚至cookie本身都被破坏了。这可能来自用户清除浏览器数据,也可能是系统中尚未捕获的内容。

截至目前,身份验证系统似乎正在按预期运行(Authlogic),我们在应用程序的其他组件中没有遇到广泛的问题。

我正在考虑使用ActiveRecordStore来查看问题是否已解决。我的理解是会话数据将存储在数据库中,如果删除了cookie,用户将无法注销。

使用CookieStore与ActiveRecordStore有很多已知的优点/缺点吗?

为什么在创建Rails应用程序时,CookieStore是默认值,而不是ActiveRecordStore?

2 个答案:

答案 0 :(得分:5)

我可以回答你的最后两个问题。

  • 如果您在会话中存储敏感数据,则不应使用cookie存储,因为您希望此类数据位于服务器端,而不是客户端。

  • Cookie存储是默认值,因为Rails会强烈建议您不要在会话中存储大量数据,因为cookie存储空间限制为4 KB。

答案 1 :(得分:0)

我认为CookieStore是默认值,因为它很简单。它不需要数据库表。

CookieStore不如ActiveRecordStore安全。使用CookieStore,截获的cookie将永久访问有效会话,即使您创建了新会话。使用ActiveRecordStore,您可以通过从数据库中删除会话来使会话无效。

请参阅此博文:http://www.bryanrite.com/ruby-on-rails-cookiestore-security-concerns-lifetime-pass/