我有一個MVC應用程序,它使用大量的Ajax請求來獲取和張貼頁面上的div內的表單。然而,我偶然發現了我已經修復的經典Ajax超時問題創建一個自定義的Authorize屬性,它只是返回一個401,它允許我通過Jquery重定向到登錄頁面(這一切都很好,很好)。在會話過期後處理POST上的ReturnUrls MVC3
public class AjaxAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Items["AjaxRequestPermissionDenied"] = true;
}
base.HandleUnauthorizedRequest(filterContext);
}
}
但是當我做一個表單的正常服務器端提交時,會話已過期,我重定向到登錄表單正常的,但與形式參數在URL即 Login/Login.aspx?ReturnUrl=%2fTest%2fComp%2fSite%2f4
。 因此,當我重新登錄時,無法將表單重新插入所需的div中,因爲這是最初調用它的頁面中的一個單獨URL。
接下來的問題是,我將如何處理這種情況,以便我們總是重定向到默認的登錄頁面,或者最好是重定向到帶有指向登錄頁面的鏈接的generac Timeout頁面?
感謝達林。我已經排序了Ajax位。我遇到的問題是經典的asp.net表單提交(通過Submit buitton),在會話超時時具有值。我得到一個重定向到登錄頁面,但它帶回了參數,這是與表單身份驗證的默認行爲。我想排除返回Url? – lacoder