我有一个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