質問

現在、工場/倉庫タイプの場所で使用される社内 Web アプリケーションを構築しています。ユーザーは 1 台の PC を複数人で共有することになるため、他のユーザーが PC に来て前のユーザーのユーザー名で何かを行う可能性があり、ユーザーがアプリケーションにログインしたままうろうろしてしまうのを防ぐために、セッション タイムアウトをかなり短くする必要があります。

この問題は、ユーザーがフォームに情報を入力している間に、特に時間がかかる場合にセッションがタイムアウトになる可能性があることです。

ユーザーフレンドリーな方法でこれにどのように対処しますか?

役に立ちましたか?

解決

ユーザーが積極的に情報を入力しているという事実をサーバーに常に通知します。たとえば、ユーザーが TAB キーを押すかフィールド上でマウスをクリックすると、サーバーにメッセージが送信されます。最終的な解決策はあなた次第です。

他のヒント

AJAX を使用して、部分的に入力されたフォームの内容を定期的に隠しておき、システムによって起動されても作業内容が失われないようにします。それを実行したら、AJAX を使用して、ユーザーが入力に時間を費やしてもセッションがタイムアウトしないようにします。

おそらく最善のアドバイスは、作業が完了したらブラウザ ウィンドウを閉じるようにユーザーに依頼することでしょう。セッション Cookie を使用すると、ブラウザが閉じられるか、30 分のタイムアウトになると、セッションは自動的に終了します (変更可能)。

デフォルトでは、ページが読み込まれるとブラウザとサーバーの間で対話が行われないため、フォームページのバックグラウンドで JavaScript がサーバーにアクセスしてセッションを更新する必要がありますが、それは少し面倒に思えます。そんな小さな問題。

セッションのタイムアウトが短すぎてユーザーがフォームに入力する時間がない場合は、セッションを維持するために、数分ごとにサーバーに http リクエストを行う AJAX スクリプトを配置します。私は、ユーザーが何かを入力する必要があるページ、またはすでに何かを入力し始めているページでのみこれを行います。

もう 1 つの解決策は、セッション タイムアウト リマインダ スクリプトを使用して、ダイアログをポップアップして、セッションがタイムアウトしそうであることをユーザーに通知することです。ポップアップには、「ログアウト」と、セッションのタイムアウトを更新するための Ajax リクエストを行う「アプリケーションの使用を続行」が表示されます。

この場合、キープアライブ JavaScript プロセスが役立つ可能性があります。スクリプトがいくつかのキー トリガーをキャプチャすると、セッションを維持するために「まだ入力中です」というメッセージをサーバーに送信します。

フォームをより小さなチャンクに分割することを検討しましたか?

タイムアウトを監視し、現在のセッションが期限切れになることをユーザーに通知するポップアップを表示し、「OK」または「キャンセル」ボタンを表示します。[OK] をクリックしてセッションを続行します (つまり、カウンターをさらに 5 分または 10 分にリセットします (必要に応じて) - または - キャンセルして、セッションがゼロまでカウントダウンを続けて終了します。
それは多くの対処方法のうちの 1 つです。

セッションを開いたままにするために JavaScript の「スレッド」を使用するのは、私にとっては悪い考えです。

これは、アプリケーションの前にユーザーがいない場合に一部のリソースを解放するために存在するセッション タイムアウトの概念に反しています。

「典型的な通常の使用法」でフォームに入力するには、セッションタイムアウトをより正確な時間に調整する必要があると思います。

次のような方法で積極的に行動することもできます。

  1. タイムアウトが切れる前に、セッションがまもなく期限切れになるという非侵入的な警告(ポップアップではなく)をユーザーに表示するJavaScriptアラートを設定します(そして、タイムアウトをリセットして警告を削除するためのAjaxリクエストを送信するためのリンクを提供します)これにより、ユーザーが現在入力しているフォームを見失うことがなくなります)、
  2. また、2 番目の JavaScript 「スレッド」もあり、セッションの有効期限が切れた場合、セッションの有効期限が切れたことを示すメッセージを表示してログイン ページにリダイレクトします。

ユーザーが無駄に複雑なフォームに記入することを避け、ユーザーが立ち去ったときにケースを処理できるため、これが最善であると考えられます。

技術的な解決策の代替として、特定のジョブ (フォームへの入力など) が完了するたびに、ユーザーに別のジョブを続けたいか、それとも完了したかを尋ねるような方法でアプリケーションを作成することもできます。メニュー オプションを備えたスタート画面があり、ユーザーがオプションを選択した場合、最初に資格情報を入力する必要があります。

または、フォームにパスワードフィールドを追加します。セッション中に記入する必要があるフォームの数によって異なります。

ユーザーがフォームを投稿し、そのセッションがタイムアウトになった場合は、フォームの値を必ずどこかに保存してから、ユーザーに再度ログインするよう求める必要があります。相手があなたを再認証すると、フォームを再送信できます (データは何も失われないため)。

非常に長いセッションを必要とするものを開発していました。ユーザーはマシンに座っているときにページにログインし、作業を終えた後にログアウトしました。現在、彼はシステムを数分間または数時間使用する可能性があります。彼がログアウトするまでセッションを維持するために、JavaScript でタイマーを使用し、サーバーにアクセスして、 国歌 サーバー上の現在時刻のラベル。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top