0

フォームが URL に投稿される安全な Web サイトには、次の 2 つの要件があります。

  1. 認証チケットがまだ有効な場合、フォームは新しいウィンドウに投稿されます。そうでない場合、同じウィンドウがユーザーをログイン ページにリダイレクトします。
  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>
4

2 に答える 2

0

ポップアップブロックを調整して回避する以外にできることはないと思います。js がそれを行うことができれば、ブロッカーの目的がほぼ完全に無効になります。また、コードはユーザー空間にあるため、js でリダイレクトを行う場合のセキュリティについても考慮する必要があります。ユーザーはブラウザからリダイレクトをキャンセルできます。

代わりに、サーバーでチェックを行って使用しないのはなぜですか

 RedirectToAction() 
于 2013-11-10T18:17:14.510 に答える