1

我目前遇到一个奇怪的问题,即我们的用户被注销。我无法明确地重现它。

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

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

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

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

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

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

4

2 回答 2

5

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

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

  • cookie 存储是默认设置,因为 Rails 强烈提示您不应在会话中存储大量数据,因为 cookie 存储限制为 4 KB。

于 2010-08-12T16:25:59.277 回答
0

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

CookieStore 不如 ActiveRecordStore 安全。使用 CookieStore,即使您创建了一个新会话,截获的 cookie 也将永远提供对有效会话的访问权限。使用 ActiveRecordStore,您可以通过从数据库中删除会话来使其无效。

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

于 2012-05-22T16:24:37.583 回答