2

现在我们倾向于在这个页面渲染之前将工作量拆分在一个页面中,以加快速度,所以,我们通常加载基本的,然后在 DOM 准备好后,我们调用所有部分以带来更多显示正常动画的数据加载 gif ...

当请求这种方法时,用户会话已经过期并且他/她需要再次登录的正常程序是什么?

目前我没有这样的东西,浏览器只显示无穷无尽的加载 gif ......我想知道解决这种琐碎问题的最佳方法是什么。

我想过发送一个错误标志,我可以从 javascript 读取并重定向到登录页面

$.get( url, data, function(data) { 
    if(data.logout) document.location.href = '/LogOut'; 
    ...
});

但我很快就从我的控制器那里得到什么会话过期了......

PS 我的 Web 应用程序是使用 ASP.NET MVC 3 制作的。

4

1 回答 1

4

我建议您从以下文章开始,Phil Haack 在其中解释了如何正确处理 ASP.NET MVC 中的 401 错误,而不会自动将您重定向到LogOn页面。

然后像往常一样简单地执行您的 AJAX 请求:

$.get(url, data, function(data) { 
    // if we got here it means that the request succeeded
    // => do whatever you have to do for this case
});

然后您可以注册一个全局 AJAX 事件来处理所有 AJAX 请求的 401 案例:

$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
    if (jqXHR.status == 401) {
        // the server returned 401 (Unauthorized) => 
        // redirect to the LogOn page
        window.location.href = 'put your logon url here';
    }
});
于 2012-08-14T06:16:42.757 回答