0

ASP.NET を使用して Web アプリを構築していますが、セキュリティ要件は非常に厳格です。現在、ユーザーが 2 分間アイドル状態の場合、アプリはロックアウトされます。各ページには、ページの読み込み時に開始し、2 分後にロックアウト ページにリダイレクトする JavaScript タイマーが登録されています。ロックアウト ページがサーバーに読み込まれると、ユーザーがデータベース内で「ロックされている」とマークされ、ロックを解除せずに別の場所に移動するのを防ぎます。ロックアウト ページには、ユーザーが完全にログアウトする必要がある 15 分間のタイマーも設定されています。

現在、ヒット時にユーザーをログアウトするログアウトページにリダイレクトするように js を設定することでこれを実現しています。これは 15 分後にトリガーされます。しかし、ユーザーがロックアウト ページを更新して 15 分のタイマーを無期限に再起動することを妨げるものは何もありません。サーバーもカチカチ音をたてて、指定された時間後に起動したいと思います。タイミングは正確に一致する必要はありません。互いに 10 秒以内であれば問題ありません。

だから:これを行う方法はありますか?理想的には、ロックアウト ページは、時間切れ後にユーザーを起動するサーバー側プロセスを開始します。可能であれば、そのようなことを実装する方法がわからない

4

1 に答える 1

1

永続的なデータ ストレージには何を使用していますか? データベース?

ユーザーがまだそこにいることを示すボタンをクリックしない場合、15分が経過するとログオフされることをユーザーに警告するために、同様のクライアント側のセットアップを作成しています。開始まであと2分です。

これは私のマネージャーが望んでいる便利な機能です。ユーザーが制限時間を超えた場合は、ユーザーを確実にログオフするためのサーバー側のチェックが既にあります。実際には、2 つのチェックがあります。

最初のチェックは、ユーザーのセッション トークンを保持する Cookie の鮮度です。その鮮度は、ユーザーがサーバーに要求するたびに 15 分間設定されます。Cookie が期限切れの場合、ユーザーはログアウトされます。

もう 1 つは、ユーザーの最後のサーバー要求の記録です。15 分以上経過すると、ユーザーはログアウトされます。

私があなたなら、2 番目のスキームを使用します。

私のデータベースでは、他のデータの中で、ユーザーがロックアウトされたかどうかと、ロックアウトされた時刻を示す 2 つの列を持つロックアウト テーブルを作成します。15 分経過後、ユーザーがロックアウトを解除する手順を実行していない場合は、ユーザーをログオフします。明示的に手順を実行する場合は、ロックアウト レコードをクリアします。そうすれば、リフレッシュするだけでは、ロックアウト時間を保持しているデータベース列はクリアされません。ただし、15 分が経過したかどうかを確認することはできます。

ロックアウトのアクティブ化時間をヌルにすると、2 つの列を 1 つにまとめることができます。しかし、私は、ロックアウトが有効かどうかを明示的に示す列を用意することを好みます。列を既存のユーザー データベースに追加することもできます。

于 2013-10-07T18:39:47.733 に答える