javascript - MVC .NET 提示用户登录

标签 javascript asp.net-mvc asp.net-mvc-3 jquery asp.net-ajax

我很迷茫。现在,如果用户的 session 超时,我的站点将重定向到登录页面。我要解决的一个问题是,当用户在登录时单击操作按钮时,他们会创建一个 ajax 请求。 我想在运行 ajax 调用之前捕获超时,弹出一个模式对话框提示用户输入用户名和密码,然后在成功登录后进行 ajax 调用。 我的主要目标是在成功登录后运行 ajax 调用,我不一定需要弹出窗口,但我认为这是最好的方法。
到目前为止我所做的就是这个。我创建了一个 Controller ,它的人生目的是告诉我是否有超时。在 ajaxStart() 函数中,我加载了一个包含调用该 Controller 的结果的 div。如果该 div 中的 html 包含“登录”字样,那么我将调用 window.showModalDialog。这有时有效,有时无效。对我来说,这感觉就像一个 hack,必须有更好的方法来完成它。有什么想法吗??

function ajaxStart() {
        var timeoutTest = $('#timeoutTest');
        timeoutTest.load(timeoutUrl);
        if (timeoutTest.html().indexOf('Log On') != -1) {
            window.showModalDialog(logonUrl, "", "dialogHeight: 600; dialogWidth: 400");
        }

        tid = setTimeout(showSpinner, 500);
    }

最佳答案

我建议您看一下 following article其中 Phil Haack 说明了一种技术,如果身份验证票证已过期并且请求是使用 AJAX 发出的,则允许您将应用程序配置为发送 401 状态代码。然后你可以很容易地在客户端上捕获这个 401 状态代码并显示模态对话框。您甚至可以通过订阅 .ajaxError() 为页面上发生的所有 AJAX 请求全局执行此操作。事件处理程序并在一个地方处理这些错误。

关于javascript - MVC .NET 提示用户登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9568683/

相关文章:

javascript - 如何检查文本溢出:ellipsis is supported in browser

javascript - 如何使用我的代码让鼠标悬停在带有事件监听器的 html Canvas 上绘制? https ://jsfiddle. 网/dannixx/d0p0j8cL/

javascript - 将 sendAsBinary 与 ASP.Net MVC 结合使用

c# - MVC 对 ViewPage 本身强类型化

asp.net-mvc - 缓存替换是否在 ASP.NET MVC 2 中工作?

javascript - 如何动态更改 HTML 链接的 href 属性

asp.net-mvc - 真的有必要测试 Controller 方法吗?

php - jQuery 和 Ci 未正确处理注销功能

javascript - 通过 JavaScript 将 CSS 像 HTML 一样注入(inject) DOM

javascript - 如何获得 Bootstrap slider 的最小值和最大值?