web-dev-qa-db-ja.com

セッションの期限切れの警告のベストプラクティス

私たちのアプリケーションには30分の自動期限切れセッションがあります-セッションはサーバー通信で更新されます。

有効期限が切れるセッションをユーザーに伝えるための最良の方法は何ですか?私の最初の考えは、「セッションがまもなく期限切れになります[続行]」で、有効期限の直前にモーダル警告を表示することです(より適切な表現? )ユーザーが続行できるようにします(バックグラウンドで通信してセッションを更新します)。

  • ユーザーにセッションタイマーを表示することは適切ですか?
  • ユーザーがセッションを延長する機会を持たずにセッションを期限切れにすることは適切ですか?
  • ユーザーは、セッションを延長するオプションがある限り、いつセッションが期限切れになるかを認識する必要がありますか?
32
Luke Charde

セッションのタイムアウトは「時間制限応答」のカテゴリに分類されると思います。その場合、アクセシビリティを満たすために、ユーザーは拡張する機会を与えられるか、少なくとも、それが発生していることを通知される必要があります。

セッションの長さをユーザーに通知することは必須ではありませんが、「アプリケーションごと」に決定する必要があります。たとえば、ユーザーが複雑なデータを作成または変更しているアプリケーションや、その他の複雑で時間のかかるアプリケーションの場合、メモを調べている間に拡張する機会を提供することは、重要な「機能」になる可能性があります。

13
Susan R

最初に理解する必要があるのは、ユーザーはセッションを気にしないということです。セッションは、開発者がユーザーにセキュリティ/アプリケーションのニーズを満たすよう強制するものです。 Facebook、Hotmailなどの理想的なセッションでは、セッションが期限切れになることはありません。

とは言っても、銀行のサイトなど、状況によってはセッションを期限切れにする必要があるため、トイレなどに行くときに誰かがお金を盗むためにドアを開けておきたくないのです。

では、セッションを期限切れにする必要がある場合、ユーザーに警告し、延長するオプションを提供する必要がありますか?

まあ、セッションの期限切れは、ユーザーがデータを保護するためにサイト/アプリケーションを使用していないときにログアウトするために使用されます。論理的には、ユーザーがまだサイトを使用している場合、セッションは期限切れになりません。したがって、セッションの期限切れが近づいていることをユーザーに警告することは重要ではありません。つまり、ユーザーがサイトを使用している場合は表示されず、ユーザーがサイトを使用していない場合は表示されません。

セッションが期限切れになる必要がある場合は、アクティブなユーザーのセッションが期限切れにならないように、ユーザーアクティビティの記録に注力してください。

編集:例私たちのウェブアプリでは、キーダウン、マウスの移動、マウスのクリック、スクロールなどのクライアント側のユーザーインタラクションをキャプチャするJavaScriptエンジンを開発しました。ユーザーイベントが発生すると、セッションを維持するためにajaxリクエストが送信されます。

ユーザーがマウスを動かすたびにサーバーへの多数のajax呼び出しを回避するために、JavaScriptを設定してajaxリクエストを5分ごとに1回だけ送信するように設定できます。つまり、If最後のユーザーインタラクション時間> 5分以上Thenセッションを存続させるためにajaxリクエストを送信します。

18
ArchieVersace

昼休みや緊急の会議など、いつでもその警告が気付かれないようなシナリオを考え出すことができます。だから私は最初にそれらのセッションの存在をできるだけユーザーにtransparentとして作成しようとします:

  • タイムアウトの発生を最小限に抑えるために、可能な限り頻繁にセッションタイマーをリセットします(アクティビティが検出されたときなど)。
  • セッションの有効期限が切れており、ユーザーが行ったすべてのことを直接インプレースで復元できる場合は、静かに新しいセッションを開いてそのデータを再挿入します-最初はセッションが期限切れにならないように見せます
  • セッションの有効期限が切れており、一部のデータを元の場所に復元できない場合は、他の方法でデータを利用できるようにしてください(データをコピーして貼り付けるテキストブロックまたはファイルなど)。
  • セッションが期限切れになり、一部のデータが失われた場合は、大量に謝罪
12
Jan

Mint.com ' sは非常に優れたアプローチです。

enter image description here

また、alert()スタイルのメッセージボックスに対して、セッションの期限切れについてユーザーに警告することを強くお勧めします(一部のWebサイトではこれを行っています)。それを取り消すことはできないので、ユーザーが昼食に出ていた場合、ユーザーはメッセージボックスに戻り、[OK]をクリックしてセッションを保存すると、いずれにしてもログアウトされます。また、メッセージボックスは複数のタブにまたがってうまく拡大されません。

12
Phil Cohen

セッションを存続させるためのjquery/ajax呼び出しの代わりに、セッションが条件付きで期限切れになるか、常にパフォーマンスヒットがない場合に、javascript setIntervalタイマーを使用して小さな1x1スペーサーイメージを更新することを検討できます。

1
Manu

私はそうしないことをお勧めします。

もちろんアプリに依存しますが、この機能を使用するこれらのサイトの多く(バンキングなど)は、実際に「入って、あなたのことをしてから去る」ように設計されています。そのため、これらのアラートとメッセージは、タブが開いている可能性があることを思い出させるだけです。私はすでにページを離れました、セッションが期限切れであることを通知する必要はありません。悪例?再度ログインします。

さて、1つの(大きな)例外は、ユーザーが大量のデータを入力する可能性があり、送信せずにセッションを失う可能性があるあらゆる種類の大きなデータ入力です。ただし、これらのシナリオでは、理想的には、ある種の自動保存機能が実行されているはずです(ala Docs)。

0
DA01