在使用 ajax 更新目标 ID 时,登录页面在身份验证超时后呈现在 div 标记内.MVC2.



由于表单身份验证而超时。 由于 Ajax 更新了目标 ID 属性,我的整个登录页面在div 中呈现。 是否有任何解决方案可以在超时身份验证后在新窗口中打开我的登录页面,而不是在div 标签中呈现。

如果需要,我可以提供我的整个代码。帮帮我的人。

提前感谢!

我正在使用的网络应用程序遇到了同样的问题。您需要设置一个登录控制器,其部分视图仅包含所需的登录字段。当应用程序超时时,您将被重定向到登录控制器,该控制器将返回仅包含所需字段的部分视图。此外,您可以使用 JQuery 或 JS 隐藏您不感兴趣的所有元素,而在此页面中。

不要忘记在 Web 配置中设置超时的登录控制器

<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="9000" />
</authentication>

希望这有帮助。

终于我得到了另一种方式

在登录操作中,您可以附加自定义响应 HTTP 标头:

public ActionResult LogOn(){
{
    var model = ...
    Response.AppendHeader("X-LOGON", "Checked");
    return View(model);
}

然后订阅完整事件并测试此标头是否存在并采取相应措施:

$.ajax({
    url: '/home/some_protected_action',
    success: function (data, textStatus, XMLHttpRequest) {
        if (XMLHttpRequest.getResponseHeader('X-LOGON') === 'Checked') {
            // the LogOn page was displayed as a result of this request 
            // probably timeout => act accordingly
             window.location = '<%=Url.Content("~/Account/LogOn") %>';
             window.location.reload();
        }
    }
});

最新更新