我有一個應用程序使用devise進行安全保護,會話超時時間爲30分鐘。如果用戶點擊一個鏈接超時,他們會被重定向回登錄屏幕,並顯示「您的會話已過期,請再次登錄以繼續。」,非常好。RoR中使用設計的會話超時消息
但是我在很多地方都有ajax。如果會話超時並且用戶執行ajax操作,我需要與上面相同的行爲,而不是在後臺發生401錯誤而無法執行。
到目前爲止,我有每一頁上這個jQuery代碼來捕獲401S和重裝:
$(document).ajaxError(function(e, error) {
switch(error.status) {
case 401: {
// unauthorised (possible timeout)
location.reload();
break;
}
它工作得很好,但有一個惱人的問題:
由於Ajax請求命中設計第一,當我的應用程序重新載入頁面時,我將其引導到登錄頁面,但是我沒有看到超時消息,我看到未經身份驗證的「您需要先登錄或註冊才能繼續。」信息。
有沒有辦法確保在第二個請求設計仍然顯示超時消息?