私は Web アプリケーションを作成していますが、それをシングル ユーザー アプリとして作成したいと考えています (他のブラウザでも他のシステムにログインできません)。
1 つの解決策は、ユーザーがログインしたときにデータベースにテーブル フィールドを設定し、ログアウトしたときにリセットすることです。
しかし、問題は、予期しないイベント (ブラウザーのクラッシュ、停電、ネットワークの問題など) が発生した場合です。
この目標を達成するための最良の方法は何ですか?
ありがとう
私は Web アプリケーションを作成していますが、それをシングル ユーザー アプリとして作成したいと考えています (他のブラウザでも他のシステムにログインできません)。
1 つの解決策は、ユーザーがログインしたときにデータベースにテーブル フィールドを設定し、ログアウトしたときにリセットすることです。
しかし、問題は、予期しないイベント (ブラウザーのクラッシュ、停電、ネットワークの問題など) が発生した場合です。
この目標を達成するための最良の方法は何ですか?
ありがとう
あなたができる方法はありません。
NAT を実行するルーターの背後にあるユーザー A と B を想像してください。つまり、両者はインターネット上で同じ IP アドレスを持っています。
ブラウザにデータを保存せずに、どれがどれであるかをどのように判断しますか?
ブラウザにデータを保存する場合、異なるブラウザに単一のログインを持つことはできません
あなたの解決策は正しいです。この操作のためにデータベースにフィールドを設定する必要があります。ただし、ブラウザのクラッシュやその他のイベントの場合は、タイマーを設定する必要があります。指定された時間内にユーザーが何もしない場合は、ログアウトする必要があります。コンソール アプリケーションを作成して、それをサーバーのタスク スケジューラに配置するか、Linux サーバーを使用する場合は Cron ジョブを使用する必要があります。別の方法で、Sql Server データベースの SQL ジョブを作成できます。
更新: 最後の操作時間のデータベースにフィールドを設定できます。ユーザーが何らかのリンクをクリックするか、ページで作業したとき (サーバーにリクエストを送信する操作を意味します)、フィールドを現在の時刻で更新する必要があります。たとえば、30 分以内に何もしない場合は、システムがアカウントをログに記録した場合にユーザーに警告する必要があります。タスク スケジューラに配置したコンソール アプリケーションは、現在の時刻と最後の操作時刻を確認します。30 分以上の差がある場合は、ユーザーをログに記録する必要があります。