由于表单身份验证而超时。由于 ajax 更新了目标 id 属性,我的整个登录页面都在 div 内呈现。是否有任何解决方案在超时验证后我的登录页面在新窗口中打开而不是在 div 标签中呈现。
如果需要,我可以提供我的整个代码。帮助我的人。
提前致谢!
由于表单身份验证而超时。由于 ajax 更新了目标 id 属性,我的整个登录页面都在 div 内呈现。是否有任何解决方案在超时验证后我的登录页面在新窗口中打开而不是在 div 标签中呈现。
如果需要,我可以提供我的整个代码。帮助我的人。
提前致谢!
我正在开发的 Web 应用程序遇到了同样的问题。您需要设置一个登录控制器,其部分视图仅包括您需要的登录字段。当应用程序超时时,您将被重定向到登录控制器,该控制器将返回部分视图,其中仅包含您想要的字段。此外,您可以使用 JQuery 或 JS 隐藏在此页面中您不感兴趣的所有元素。
不要忘记在 web config 中设置登录控制器的超时时间
<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();
}
}
});