【问题标题】:Logging out from an ajax call从 ajax 调用中注销
【发布时间】:2012-08-10 09:56:13
【问题描述】:

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

正常流程是什么,当请求这种方法时,用户会话已经过期,他/她需要重新登录?

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

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

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

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

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

【问题讨论】:

    标签: asp.net-mvc-3 session jquery


    【解决方案1】:

    我建议您从 following article 开始,其中 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
    });
    

    然后您可以注册一个global AJAX event 来处理所有 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';
        }
    });
    

    【讨论】:

    • 我会深入看看那个达林,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-08-15
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多