2016-05-03 16 views
-1

私は自分のアプリケーションのすべてのwinformで現在のログを記録しようとしていますが、アプリ内の複数のログインユーザーを区別する方法はわかりません。ログインしているユーザーを区別する

私は SessionIDUserIDを持つ1人のユーザーを識別するSQLテーブルを持っています。

アプリが異常終了した場合、どうすればこのセッションを閉じることもできます(useridActiveUsersテーブルから削除します)。

助けが必要ですか?

編集:このアプリはいくつかのwinformsで構成されていて、複数のPCで同時に実行されます。ユーザーはアプリケーション内で作成され、UserIDのPKとしてSC_Userテーブルに格納されます。 テーブルはFKとしてUserID、PKとしてSessionIDを持っています。私が欲しいのは、任意のwinformのアプリケーションを使用しているユーザーのUserIDを取得し、たとえば、そのユーザーのアプリケーション言語の設定を変更するために使用することです。 1人のユーザーの場合、ログイン時にはをActiveUsersに挿入し、ログオフ時には削除します。

+0

あなたの質問は1つのデスクトップアプリケーションあなたのアプリケーションの各フォームは、別のSQLユーザーを使用していますか?BTW、あなたは自分のテーブルにユーザーの入り口と出口を記録する場合、私は異常終了を処理するエレガントな方法は表示されません。 – FLICKER

+0

あなたのアプリケーションについて何も知らない人には、この質問を編集する必要があります。 – pmcilreavy

+0

'ActiveUsers'テーブルで' UserID'ではなく 'SessionID'を使用する必要があります。 – Squirrel

答えて

0

アプリケーション全体のデータを保持するのは簡単です。あなたは、静的な(shared in vb.net)クラスまたはsingletonクラスをプロジェクトに追加してそこにアプリケーション全体のデータを保存するだけです。 (Extra read:differences between singleton and static

2番目の質問として、適切なログアウトなしでクライアントが閉じられているかどうかを知る方法はありません。このような場合には、keep-aliveメカニズムを実装します。

シンプルな実装では、セッションテーブルに別の列を追加して、ログインしているユーザーが最後にアクティブだったときのタイムスタンプを追跡することができます(通常、静的/シングルトンクラス内のタイマーがこの列の更新を担当します)この列と現在の日時の差が十分に大きければ、適切なログアウトなしでアプリケーションが閉じられていると見なすことができます。

SQL Server上でスケジュールされたジョブを実行してあなたがしたい場合は、適切なログアウトせずにアプリケーションが閉じられているセッションテーブル上のレコード。

関連する問題