簡體   English   中英

超時后,如何將用戶重定向回退出頁面? Asp.net MVC

[英]How can I redirect a user back to signout page when timed out? Asp.net MVC

我有一個站點,用戶使用很多ajax(jquery)。 現在,如果用戶因任何原因超時(走了30分鍾左右)。 接下來,我希望將它們返回到登錄頁面。

我在webconfig中設置了所有內容(returnUrl和超時),如果他們嘗試轉到某個頁面,則沒有權限去將它們發送到登錄頁面。

但是我在用於ajax請求的控制器中的方法上具有authorize標簽。 因此,如果用戶超時,則不再對他們進行身份驗證,但是由於他們登錄並離開后,他們可能正在進行所需的身份驗證。

現在他們可以去嘗試保存可以執行ajax請求的內容。 authorize標記將阻止他們執行此操作,因為它們將使授權失敗並返回URL。

但是,即使返回URL似乎已發送回給他們,它們也不會重定向到登錄頁面。 所以我猜因為所有這些東西都是ajax,這就是為什么它無法正常工作的原因。 那我能解決這個問題嗎?

使用setTimeout每30秒運行一次客戶端功能,該功能應通過AJAX向服務器詢問會話是否已超時。 如果有的話,客戶端代碼可以扔掉任何登錄cookie並重定向到登錄頁面。

您可以將登錄URL硬編碼為客戶端代碼,或者讓服務器處理程序在需要超時的情況下從web.config返回該值。

這仍然使用戶有可能在用戶實際超時和客戶端代碼執行其檢查請求之間的0-30秒內嘗試嘗試某些操作。 為了防止這種情況,請讓服務器發回會話中剩余的時間,這樣,您的客戶端代碼就可以做出決定,以便更早再次檢查,或者在服務器端之前進行客戶端重定向停滯時間。

您需要檢查Ajax錯誤以獲取403響應

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM