2013-05-29 27 views
3

所以我遇到了設計的可記憶模塊的問題。我已經正確實施了所有設置:我添加了:可記住我的用戶模型,將remember_created_at添加到用戶表,並在登錄頁面上添加:remember_me複選框。設計問題可記住 - 沒有自動註銷瀏覽器關閉

我可以確認,如果用戶登錄時沒有選中記住我的複選框,那麼會創建一個cookie,到期時間已過,並且remember_created_at字段將設置爲空。如果用戶選中該複選框,則會在remember_created_at字段中保存一個時間戳,並將cookie的截止日期設置爲默認的2周。

所以這些問題我有:

  1. 如果我不檢查記得我複選框並登錄,請關閉瀏覽器,然後返回到應用程序,我仍然記錄在「不是個。如果用戶不想被記住瀏覽器關閉時會話被銷燬?還是我誤解了這個?

  2. 對於測試目的,我將:remember_for選項更改爲1.minute。因此,我在登錄前檢查了記住我的方框,並驗證了cookie的過期日期是否正確,並且時間戳記已保存在remember_created_at中。然後關閉瀏覽器並等待約2分鐘。然後,我再次打開瀏覽器,我仍然登錄。我錯過了什麼,或者我只是沒有正確理解可記憶的模塊?

謝謝。

+0

我只是更加註意記住remember_created_at列中保存的時間戳。時間戳以UTC保存,所以在本例中它是2013-05-29 14:56:10.277,但我在新英格蘭,所以時間是10:56。運行該應用程序的服務器位於德克薩斯州中部。我假設設計處理這(轉換爲/從UTC)?或者也許這就是爲什麼我有問題可以記住? – ggrillone

+0

你在哪裏更改':remember_for'選項,在'config/initializers/devise.rb'中?如果是這樣,您必須重新啓動導軌服務器才能使配置生效。 –

+0

是的,我在'config/initializers/devise.rb'中設置了':remember_for'。是的,我確實重新啓動了服務器幾次。 – ggrillone

回答

2

所以問題是我不是設計的寶石。當我測試時,我正在關閉瀏覽器選項卡,而不是整個瀏覽器。

10

我與Devise Rememberable有同樣的問題,直到我發現Chrome瀏覽器在關閉瀏覽器後沒有在「瀏覽會話結束」時過期會話cookie時,選項「On startup」 - 「Continue where I left off」在設置中啓用。

+0

Chrome的默認行爲也是我的問題。在FF中測試證實Devise正按預期工作。通常情況下,我會使用Chrome的Incongito窗口來測試會話,但顯然無法驗證Devise「不記得」我。 –

+0

與Chrome相同的問題。出。 – user4584963