6

さまざまなタブで開くことができる AngularJS webapp を開発しています。ユーザーがこれらのタブのいずれかでログアウトしたことを検出する最良の方法を知りたいです。他のタブにログイン モーダル ウィンドウをポップアップ表示したいと思います。サーバー送信イベントを使用するか、サーバー Cookie の存在を追跡することを考えていました。私はこのようなことをしたことがないので、私のオプションの長所と短所は何か、またはそれを行うための他のよりスマートな方法がないかどうかを尋ねています。

編集:サーバー上で、すぐにサーバー送信イベントをサポートする ServiceStack (C#) を取得しました

4

5 に答える 5

2

タブがフォーカスされたときに、いくつかの Cookie またはセッションを確認できます。あるタブでログアウトして別のタブに切り替えると、アクティブなタブが onfocuse イベントを取得します。ログイン Cookie またはセッションがまだ残っているかどうかを確認できます。

ブラウザーのタブにフォーカスがあるかどうかを検出する

同様の問題があると思います。

于 2016-05-27T20:13:07.500 に答える
1

比較的簡単な方法の 1 つは、SignalR を使用することです。ユーザーがログアウトするときに、同じユーザーの他のすべてのセッションにメッセージを送信します。

于 2016-05-27T19:51:13.250 に答える
0

短い答え: 良い方法はありません。

長い答え:

「セッションを終了する」には多くの方法があり、「セッションを終了する」が何を意味するかについてもいくつかの定義があります。

セッションを終了する方法は次のとおりです。

  • タブを閉じる
  • 離れて移動する
  • ブラウザを閉じます。
  • ブラウザを強制終了します。
  • インターネットのプラグを抜く
  • IP アドレスの変更
  • 突然の電源オフ
  • ブラウザ履歴の消去

一般的に使用される2つのソリューションがあります...

  • クライアントに 30 ~ 60 秒ごとにサーバーをポーリングさせて、私が生きていることを伝えます。
  • クローズを検出できる Websocket を使用します。
于 2016-05-27T19:53:55.717 に答える