3

認証済みセッションと Ajax リクエストを実装するために、django と jquery を使用しています。

サイトで長時間非アクティブになった後、認証されたユーザーをログアウトするために、認証セッションのタイムアウトを設定しました。私のサイトの一部のページには、ユーザーが認証されたセッションにいる必要がある多くの AJAX 呼び出しがあります。ユーザーがこのようなページを長時間開いたままにし、セッションが自動タイムアウトになると、行われた AJAX 呼び出しは失敗し、ブラウザー エラーが表示されます。私の Web スタック (django) は、これらの AJAX リクエストに対してログインへのリダイレクトを返しますが、(jquery を使用して) $.ajax() にエラーとして表示されるだけです。

認証セッションがタイムアウトしたことがわかった場合、ページをリロードし、AJAX 要求を介してユーザーをログイン ページに送信するにはどうすればよいですか?

4

2 に答える 2

7

1 つの方法は、ページがまだログインしているかどうかを確認するためにページに ping を実行するだけのスクリプトを作成することですが、これにより、実行する必要がある AJAX 要求の数が増加します。

もう 1 つのオプションは、渡された XMLHttpRequest オブジェクトの HTTP ステータス コードをチェックするcomplete機能を持つことです。$.ajax()

$.ajax({..., complete = function(xhr, textStatus){
    if(xhr.status > 300 && xhr.status < 400) //you got a redirect
        window.location.href = '/login/';
    ...
    }, ...);
于 2009-04-10T03:42:20.550 に答える
1

本当に簡単です。クエリしているスクリプトが何らかのエラーコードを返すようにします。

{'error', 'notloggedin'}

次に、JavaScript でこの値を確認するだけです。見つかった場合は、次のようなことを行います

window.location.href = '/login/';

JavaScript がログイン ページにリダイレクトされるようにします (必要に応じてパスを変更します)。

于 2009-04-06T21:56:54.067 に答える