フォームが URL に投稿される安全な Web サイトには、次の 2 つの要件があります。
- 認証チケットがまだ有効な場合、フォームは新しいウィンドウに投稿されます。そうでない場合、同じウィンドウがユーザーをログイン ページにリダイレクトします。
- フォームを新しいウィンドウに投稿しても、ポップアップ ブロッカーは呼び出されません。
認証がまだ有効かどうかについて正しい答えを得るために、ajaxアクションを作成するところまで行きました。しかし、リダイレクト コードをスクリプト実行コンテキストの外に出すことができないため、 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>