2

最近では、処理を高速化するために、このページがレンダリングされる前に 1 つのページで行われる作業量を分割する傾向があります。そのため、通常は基本的なページをロードし、DOM の準備が整ったら、すべてのパーツを呼び出して、通常のアニメーションを示すより多くのデータを取得します。 gif を読み込んでいます ...

そのようなメソッドを要求するときに、ユーザー セッションが既に期限切れになっていて、再度ログインする必要がある場合の通常の手順は何ですか?

現在、私はそのようなものを持っておらず、ブラウザーは読み込み中の gif を無限に表示するだけです...そのような些細な問題への最善のアプローチは何だろうと思っていました。

javascriptから読み取ってログインページにリダイレクトできるエラーフラグを送信することを考えました

$.get( url, data, function(data) { 
    if(data.logout) document.location.href = '/LogOut'; 
    ...
});

しかし、セッションが期限切れになるとすぐにコントローラーから何も得られません...

PS 私の Web アプリケーションは、ASP.NET MVC 3 を使用して作成されています。

4

1 に答える 1

4

Phil Haackが、ページに自動的にリダイレクトせずにASP.NETMVCで401エラーを適切に処理する方法を説明している次の記事から始めることをお勧めしLogOnます。

次に、通常どおりAJAXリクエストを実行します。

$.get(url, data, function(data) { 
    // if we got here it means that the request succeeded
    // => do whatever you have to do for this case
});

次に、グローバルAJAXイベントを登録して、すべてのAJAXリクエストの401ケースを処理できます。

$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
    if (jqXHR.status == 401) {
        // the server returned 401 (Unauthorized) => 
        // redirect to the LogOn page
        window.location.href = 'put your logon url here';
    }
});
于 2012-08-14T06:16:42.757 に答える