6

http generic handlerに約 20個を使用するアプリケーションがありますajax call。ハンドラーでセッションにアクセスするために
使用しました。すべて正常に動作しています。IReadOnlySessionState

しかし、セッションが期限切れになると、ハンドラーはデフォルトのページにリダイレクトされ、デフォルトのページの html が応答で返されるため、いくつかの html を返します。

この問題を克服するには.
ハンドラーでセッション変数を確認しましたが、null の場合は、

 context.Response.Write("logout")

そして、ログアウトなどのjQuery ajax天気をチェックします。

  $.ajax({
            url: "myhandler.ashx",
            contentType: "application/json; charset=utf-8",
            success: function (data) { checklogout(data); $("#loading").hide(); },
            error: function () { $("#loading").hide(); },
            async: false
         });


ログアウトの場合は、場所を使用してログイン ページにリダイレクトしました。 ユーザーの認証
に使用しています。form-authentication

jquery-ajax 呼び出しを使用してログイン ページをチェックしてリダイレクトするためのより良い方法はありますか。

4

1 に答える 1

2

asp.netの認証によって自動的に制御するディレクトリにハンドラーがあります。

私がすべきことは、web.configでセットアップすることにより、asp.net認証によって自動的に制御しないようにすることです。そのため、ハンドラーへの呼び出しは、ユーザーがログインしているエーテルではなく、ハンドラー内で確認します。そのハンドラーを呼び出すユーザーがセッションと認証を持っている場合。

次に、ユーザーがそのハンドラーを読み取るための認証を持っていなかった場合、単純なフラグを ajax 呼び出しに返し、認識してリダイレクトを行います。たとえば、次のようになります。

$.ajax({
    url: "myhandler.ashx",
    contentType: "application/json; charset=utf-8",
    success: function (data) 
    { 
        if(data.redirectToLogin == true)
        {
            window.location = "/login.aspx"
        }
        else
        {
            // do the rest job
        }
    },
    error: function () 
    { 
        $("#loading").hide(); 
    }
 });
于 2012-12-30T12:32:54.927 に答える