我有一个 MVC 应用程序,它使用大量 Ajax 请求来获取和发布页面上的 div 中的表单。但是我偶然发现了经典的 Ajax 超时问题,我通过创建一个只返回一个 401 的自定义 Authorize 属性来解决这个问题,它允许我通过 Jquery 重定向到登录页面(此时一切都很好)。
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。
那么问题是,我将如何处理这种情况,以便我们始终被重定向到默认登录页面,或者最好重定向到带有登录页面链接的通用超时页面?