0

私は、Webアプリケーションからユーザーをタイムアウトさせるソリューションを試しています。私は現在、NG2アイドル使っていますし、それだけで私は上記のものに加えて、これらの二つのイベントを処理する必要が追跡され、サーバ側(角サーバのWebPACK)切断またはブラウザ終了後にユーザーをログアウトする方法はありますか?

をアクティブウィンドウに取り組むのではなくであるように思わ:

接続損失で
  • 閉じるブラウザで
    • (電源カット、ブルースクリーン、等。)

    はテストの後、私のタイムアウトは、ウィンドウを閉じた後追跡されていませんでした。 NG2-アイドルは、キープアライブなどのモジュールがありますが、私はそれを使用する方法を正確にわからないんだけど、それは私の問題

    が解決するかどうか、あなたのブラウザを閉じたときに必要な

    はあなたに

  • 答えて

    0

    に感謝する場合、私はコードを提供しますセッションが破棄されます。セッションを使用してログアウトすることができます。

    +0

    ユーザーが自分のサーバーに接続した場合はどうなりますか?私は彼がブラウザを閉じるか、クラッシュした場合に30分後に彼のセッションをタイムアウトさせたい。どのようにグローバル変数を宣言し、ユーザーの活動に基づいてそれを更新することができますか?ユーザーがアイドルになった場合(またはクラッシュの場合)、タイマーは30分から開始されます。 30分後、ユーザーはタイムアウトして自動的に切断されます。 私はng2-idleを使用していますが、セッションを閉じた後にタイマーも一緒に破棄されます。私はサーバー上のタイムアウトを追跡することができません –

    1

    主な問題は、クライアントとサーバーがステートレスに通信していることです。これは、ユーザーが身体を知っていない場合に切断されることを意味します。

    ブラウザが別のサイトを終了またはナビゲートするためのフック機能を備えている場合は、その機能を使用してログアウト要求を送信できます。

    もう1つはセッションの有効期限ですので、それを使用してください。トークンを使用している場合は、セッションが有効である限り(または、有効でない限り)ブラックリストに登録する必要があります。

    切断は大きな問題です(セッションの有効期限が何とか解決しようとしました)。 切断時にログアウトすることが本当に重要な場合は、より洗練された方法で、WebSocketまたはHTTPの長いポーリングを使用する必要があります。ハートビートを送信する必要があります。応答がない場合は、しばらくしてから自動的にログアウトします。

    これらの考えはなんとなく助けてください。

    +0

    「ハートビートを送信する必要があります。しかし、どのようにして、リスナーが常に稼動しており、そのハートビートを積極的に追跡していることを確認できますか?私の主な問題は、タイムアウトを追跡している変数がセッションの終了とともに破棄されることです。 –

    +0

    ウェブソケットを詳しく見てください。セッションが終了したときに応答しない場合は、接続を保証してハートビートを送信するだけで済みます。そのような単純な。ページを終了するなどしてもこのケースにつながるので、異なるシナリオを処理したばかりです。 – sascha10000

    関連する問題