0

私の要件は、ユーザーごとに 1 つのログインのようなアクセスを許可することです。そのために、ユーザーのログイン時に db でログイン ステータスを true に更新し、ユーザーのログアウト時に false に更新しました。しかし、問題は、ユーザーがログアウトせずにウィンドウを閉じたときです。

ウィンドウのクローズを処理するために、次のjsコードを実装しました

 var validNavigation = false;

 function wireUpEvents() {

  var dont_confirm_leave = 0; 
   var leave_message = 'You sure you want to leave?'
  function goodbye(e) {
    if (!validNavigation) {
     if (dont_confirm_leave!==1) {
         if(!e) e = window.event;
       //e.cancelBubble is supported by IE - this will kill the bubbling process.
       e.cancelBubble = true;
        e.returnValue = leave_message;
       //e.stopPropagation works in Firefox.
        if (e.stopPropagation) {
         e.stopPropagation();
         e.preventDefault();
          }
        //return works for Chrome and Safari
        return leave_message;
      }

      window.location = "logout.jsp";
    }
  }
  window.onbeforeunload=goodbye;

   // Attach the event keypress to exclude the F5 refresh
  $(document).bind('keypress', function(e) {
    if (e.keyCode == 116){
      validNavigation = true;
    }
  });

  // Attach the event click for all links in the page
  $("a").bind("click", function() {
    validNavigation = true;
  });

  // Attach the event submit for all forms in the page
  $("form").bind("submit", function() {
    validNavigation = true;
  });

   // Attach the event click for all inputs in the page
  $("input[type=submit]").bind("click", function() {
    validNavigation = true;
  });

  // Attach the event click for all inputs in the page
 $("input[type='button']").bind("click", function() {
   validNavigation = true;
 });

}

// Wire up the events as soon as the DOM tree is ready
$(document).ready(function() {
 wireUpEvents();
});

ここでは、ウィンドウを閉じると機能します。つまり、ユーザーがウィンドウを閉じるとログアウト ページに移動しますが、問題は、ユーザーがページをリロードしたときにログアウト ページになることです。

そのため、f5、submit、および anchor タグの上記の js コードと同様に、リロード イベントをバインドする必要があります。

この点で私を助けてください。

前もって感謝します...

4

1 に答える 1

0

次の 2 つのことが頭に浮かびました。

まず第一に、ユーザーがログインしているという事実は、なんらかのアクティビティが行われているという意味ではありません。ブラウザを実行したまま PC の電源を入れたままにしておく人もいます。

2 つ目は、ユーザーがページを閉じても、必ずしもログアウトしたいという意味ではなく、ユーザーが 2 つのタブを使用してサイトをナビゲートする場合に特に当てはまります。

そのため、タブを閉じるタイミングを確認する代わりに、別の場所からログインした場合にのみログアウトするか、一定量の非アクティブ後に自動的にログアウトするタイマーを設定することを検討することをお勧めします.

于 2013-09-13T07:17:22.450 に答える