在将表单发布到 url 的安全网站中有 2 个要求:
- 如果身份验证票仍然有效,表单将发布到新窗口,否则同一窗口会将用户重定向到登录页面。
- 将表单发布到新窗口不会调用弹出窗口阻止程序。
我已经写了一个 ajax 动作来获得关于 auth 是否仍然有效的正确答案。但我无法让重定向代码出现在脚本执行上下文之外,从而避免 popup blocker。请帮忙!
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>