在我們的Rails應用程序中,用戶常常將多個瀏覽器標籤一次打開幾個小時或幾天。在其中一個選項卡中出現問題時,用戶註銷然後重新登錄(或會話過期並創建新會話)。如何使用Rails中陳舊的CSRF真實性標記處理頁面
這會導致所有其他選項卡上的CSRF真實性令牌失效。如果他們嘗試提交任何表單或者在沒有刷新的情況下在這些選項卡上發出任何ajax請求,他們將會得到一個錯誤(並且實際上會被註銷,因爲這是傳遞錯誤的真實性標記時默認的Rails行爲)。
這種行爲顯然是不可取的。我想知道人們會如何正常處理用戶有一個窗口打開您的網站但真實性標記已過期的情況。
我不想做的只是將它們重定向到登錄頁面,因爲那樣他們可能會失去他們的工作,例如,如果他們已經寫了一篇長博客文章或其他東西。
想到的解決方案是讓一些JavaScript輪詢服務器以檢查真實性令牌是否已更改,或者輪詢用戶的Cookie以檢查會話是否已更改。我從來沒有聽說任何人做過這些,所以我想看看社區的想法。
你是正確的,登錄/註銷不會導致新的csrf令牌生成。看起來像它回到繪圖板找出這些無效的令牌錯誤來自哪裏 – Jacob