-1

ユーザーのログインを処理し、ユーザーがアプリケーションからログアウトしたときにログアウト時間を更新する Web アプリケーションを作成しましたが、ユーザーが直接 Web ブラウザーを閉じたり、何らかの問題でシステムがシャットダウンしたりすると、ユーザーのログアウト時間を更新できません。

possible way to update user logout timeそのような状況で何かを与えてください。

4

8 に答える 8

4

Webアプリであるため、クライアント側でjavascriptを想定しています

このような場合、ブラウザのクローズ イベントでリクエストを送信する必要があります。

window.onbeforeunload = function(event) {

   //send  request to server .

}

読みたい: ブラウザのクローズイベントを検出したいですか?

于 2013-07-09T12:05:47.207 に答える
3

次の手順は、ログアウト時間を更新するのに役立ちます。

1.各リクエストのセッションでタイムスタンプ変数を更新し続けます。
2.セッションタイムアウト中に変数値(ユーザーが最後にアクセスしたときに保持される)を取得し、ログアウトレコードを更新します。

これは、ブラウザーに依存せずにログアウト要求を送信するのに役立ちます。

于 2013-07-09T12:07:43.170 に答える
2

次のように実装HttpSessionListenerして注釈を付けたクラスを作成できます。@WebListener()

@WebListener()
public class MyListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {

    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
         Date lougOutDate=new java.util.Date();
    }
}

メソッドでsessionDestroyedは、切断の日付を取得します

于 2013-07-09T12:13:41.240 に答える
2

このコードを実装してみてください

        window.onbeforeunload = function(event) {
            var isOK = confirm("Are you sure to Leave this Page?");
            if(isOK)
            {
                // try ajax for update your table   
            }

        }
于 2013-07-09T12:26:03.740 に答える
1

TimeOut を使用しないのはなぜですか?

いくつかの解決策があります:

  • タイムアウト
  • HTTP COOKIE を実装します。以下のリンクを確認してください

http://en.wikipedia.org/wiki/HTTP_cookie

あなたの特定のケースでは、それはセッションクッキーでなければなりません

セッション Cookie Web サイトのユーザーのセッション Cookie[14] (インメモリ Cookie または一時 Cookie とも呼ばれます) は、ユーザーが Web サイトを読んでナビゲートしている間だけ、一時メモリに存在します。クッキーの作成時に有効期限や有効期間が設定されていない場合、セッションクッキーが作成されます。Web ブラウザーは通常、ユーザーがブラウザーを閉じるとセッション Cookie を削除します。[15][16]

  • 提案されているように Javascript を使用してください。それが助けになることを願っています:)
于 2013-07-09T12:10:00.503 に答える
0

「ユーザーのログアウト」メッセージをサーバーに送信する Javascript を作成してみてください。このコードは、$.unload()(jQuery を使用している場合) を使用してトリガーするかunload、ブラウザーのネイティブ イベントにバインドする必要があります。

于 2013-07-09T12:06:34.570 に答える
0

このような状況でログアウト時間を正確に取得する方法はありません。たとえば、インターネット接続の切断が原因である可能性があります。

いくつかの可能性:

  1. ドキュメントのアンロード時に ajax リクエストを送信してサーバーに通知します (@Baadshah と @mthmulders の提案に従って)
  2. サーバーにセッション タイムアウト リスナーを追加して、セッションがタイムアウトしたときのログアウト時間を設定します。間隔)
于 2013-07-09T12:07:33.060 に答える
-1

ページの jquery でイベント beforeunload を使用します。

beforeunload イベントは、ユーザーが何らかの理由でページを離れるたびに発生します。

たとえば、ユーザーがフォームを送信したり、リンクをクリックしたり、ウィンドウ (またはタブ) を閉じたり、アドレス バー、検索ボックス、またはブックマークを使用して新しいページに移動した場合に発生します。

次のコードを使用して、フォームの送信とハイパーリンク (他のフレームを除く) を除外できます。

var inFormOrLink = false;
        $(document).on('click','a', function() { inFormOrLink = true; });
        $(document).bind('submit','form', function() { inFormOrLink = true; });

        $(window).on('beforeunload',document, function(eventObject) {
            var returnValue = undefined;
            if (inFormOrLink == false) {
                //do your action

            }

        }); 

編集:ここにある回答:ブラウザー ウィンドウのクローズ イベントをキャプチャする方法は?

于 2013-07-09T12:11:19.203 に答える