2013-05-13 88 views
0

所以,我有一些current_user方法,它從cookie的auth_token中獲取ID,並且我希望cookie在與站點的窗口關閉時被刪除。如何在窗口關閉時刪除cookie?

cookies[:auth_token] = @user.auth_token 

我必須補充什麼?

+0

查找[當瀏覽器窗口關閉或用戶導航時觸發的事件](http://stackoverflow.com/questions/1025935/capture-event-onclose-browser)和[更新cookie的到期日期](http://stackoverflow.com/questions/2144386/javascript-delete-cookie)在該事件處理程序。 – Tony 2013-05-13 20:47:59

+0

所以這是通過JS完成的?沒有內置的Rails功能?比'cookies'和'cookies.permanent'之間有什麼區別? – 2013-05-13 20:51:54

+1

開始時沒有注意到ruby-on-rails標籤。我不太熟悉Rails(更多是Django的人)。由於Cookie保存在用戶的瀏覽器中,你當然可以在JS的客戶端處理它們。從Rails開始可能會更方便,但是您必須從JS中的'beforeunload''處理程序發出一個AJAX請求,才能從Rails獲得新的響應以及更新後的Cookie。 – Tony 2013-05-13 21:15:36

回答

0

實際上,如果您設置的cookie未提供過期日期,那麼 只會保留,直到瀏覽器關閉。 (這可能意味着 程序本身,而不僅僅是一個窗口或選項卡。)

過期過期將立即刪除cookie。

從主題:http://www.ruby-forum.com/topic/94682

@Joe半臉,如果它可以幫助你,請註明它是有用的。

+0

它的工作原理,但我不知道如何設置cookie從頭開始過期好?附:我不想在用戶註銷時關注用戶活動 – 2013-05-13 21:51:43

+0

不,它立即刪除cookie,我發現...... Guy給出了錯誤的答案。即使點擊重新加載也會跳出登錄頁面 – 2013-05-13 21:53:51

0

我曾經實施過類似的事情。出於安全考慮,我們必須在用戶離開頁面時自動登錄用戶。解決方案如下所示:

  • 在客戶端,請編寫beforeunload事件處理程序。
  • 從該處理程序發出AJAX請求以註銷URL,在您的情況下,它可能是刪除Cookie的特殊視圖(請參閱Rails docs on cookies)。
  • AJAX請求必須是同步的,以確保beforeunload事件處理程序等待其完成。