微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery – ASP.NET MVC强制将AJAX请求重定向到登录页面时,FormsLogin会话不再活动

我有一些 AJAX调用,通过jQuery. AJAX方法渲染PartialViewResults.这样做很棒,我的意见让我完全按照我想要的方式呈现.

当我离开页面一段时间并且Forms auth会话到期时,会出现问题.当我点击执行AJAX请求的操作时,它会显示我的div中的登录页面.

我想要将WHOLE页面重定向登录页面.

解决方法

在Global.asax的Application_EndRequest()方法中设置它

您可以检查请求是否是ajax请求,并检查是否发送HTTP重定向(302),如果是,则我们会想要发送401.

protected void Application_EndRequest() {
            var context = new HttpContextwrapper(Context);
            // If we're an ajax request,and doing a 302,then we actually need to do a 401
            if (Context.Response.StatusCode == 302 && context.Request.IsAjaxRequest()) {
                Context.Response.Clear();
                Context.Response.StatusCode = 401;
            }
        }

然后在您的客户端代码中,在全球可访问的区域:

MyNamespace.handleAjaxError = function (XMLHttpRequest,textStatus,errorThrown) {
    if (XMLHttpRequest.status == 401) {
        // perform a redirect to the login page since we're no longer authorized
        window.location.replace("logout path");
    }    
    } else {
        MyNamespace.displayGeneralError();
    }
};

  $.ajax({
  type: "GET",url: userAdmin.addUserActionUrl,success: userAdmin.createuserEditorDialog,error: MyNamespace.handleAjaxError
 });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐