安全网站中有2个要求,其中表单正在发布到网址:
我已经写了一个ajax动作,以获得关于auth是否仍然有效的正确答案。 但是我无法让重定向代码超出脚本执行上下文,从而避免弹出窗口阻止程序。请帮忙!
JavaScript的:
$('#someSystem').click(function () {
//deferred promise?
auth().done(function (result) {
//need to move below code outside this callback without side effects
if (result == 'true') {
var form = $('#ssoForm');
form.submit();
}
else {
window.location.href = "/account/login";
}
});
return false;
});
function auth() {
return $.ajax({ url: '/account/isauthenticated', method: "POST" });
}
已经过身份验证的用户的HTML
<form action="/sso/somesystem" id="ssoForm" method="post" target="_blank">
...
<div id="someSystem">Continue</div>
</form>
答案 0 :(得分:0)
我不相信你可以做任何事情来调整弹出块以避免它。如果js可以做到这一点,它几乎完全会破坏拦截器的目的。此外,您应该考虑在js中进行重定向的安全性,因为代码在用户空间中。用户可以从浏览器中取消重定向。
相反,为什么不在服务器上进行检查并使用
RedirectToAction()
答案 1 :(得分:0)
在阅读了几篇jQuery帖子甚至signalR之后,this codeproject.com article对我的案例最有帮助。似乎有一种更简单的方法来处理这个问题。开发人员在给定时间不知道身份验证是否有效,但在过期后明确知道。这些知识可以在JavaScript中进行硬编码,并且警报可以预先发送给用户(setTimeout
),而不是等待他们点击,然后试图弄明白。这种方法不会让我打扰弹出窗口阻止程序。