2010-08-12 26 views
1

我目前遇到一個奇怪的問題,我們的用戶被註銷。我無法明確地重現它。Rails,CookieStore與ActiveRecordStore

Rails應用程序正在使用默認CookieStore。

我最初的假設是,不知何故會話數據內的cookie,甚至cookie本身都被銷燬。這可能來自用戶清除瀏覽器數據,也可能來自系統中尚未被捕獲的內容。

截至目前,身份驗證系統似乎按預期運行(Authlogic),並且我們在應用程序的其他組件中沒有遇到廣泛的問題。

我正在考慮使用ActiveRecordStore來查看問題是否得到解決。我的理解是會話數據將存儲在數據庫中,並且如果Cookie被刪除 - 用戶將不會註銷。

使用CookieStore vs ActiveRecordStore有許多已知的優點/缺點嗎?

爲什麼創建Rails應用程序時CookieStore是默認值,而不是ActiveRecordStore?

回答

5

我可以回答你最近的兩個問題。

  • 如果您在會話中存儲敏感數據,您不應該使用cookie存儲,因爲您希望這些數據位於服務器端而不是客戶端。

  • Cookie存儲是默認的,因爲Rails提供了一個強有力的暗示,即不應該在會話中存儲大量數據,因爲Cookie存儲限制爲4 KB。

+0

感謝約翰,我完全可以預期在此之前:)響應 – releod 2010-09-03 19:50:27

0

我覺得CookieStore是默認的,因爲它很簡單。它不需要數據庫表。

CookieStore不如ActiveRecordStore安全。使用CookieStore,即使您創建了新的cookie,攔截的cookie也將永久訪問有效的會話。使用ActiveRecordStore,您可以通過從數據庫中刪除會話來使會話無效。

看到這個博客帖子:http://www.bryanrite.com/ruby-on-rails-cookiestore-security-concerns-lifetime-pass/