アプリケーション (C#) でユーザー認証と管理をサポートするモジュールを設計しようとしています。このモジュールは、他の開発者が「サード パーティ」コンポーネントとして使用する必要があるように、インフラストラクチャ アクティビティ用の DLL の一部として配布する必要があります。ここでの主なポイントは、私は UI (ユーザーのアクセス許可とセッションに依存する) を担当しておらず、使用するインフラストラクチャのみを提供するということです。
UserManagerそのため、ログイン、ログアウト、その他いくつかの機能やイベントなどのアクションを許可するシングルトン クラスを作成しました。UserManager クラスCurrentUserは、タイプがという名前のプロパティを保持しますApplicationUser。
ApplicationUserユーザーの詳細(フルネーム、ユーザー名など)で作成され、IsEligibleFor(Permission)関数も提供するクラスです。
ユーザーがUserManagerインスタンスを取得し、プロパティを介して現在ログオンしているユーザーと通信する必要がありCurrentUserます。理想的な方法は、ログアウト操作が呼び出されたときに無効にし、ユーザーがログオンするたびCurrentUserに新しいを作成することです。ApplicationUserしかし、これらのクラスのユーザーは のインスタンスをキャッシュできApplicationUser、変更に気付かないため、これには問題があります。
これが、オブジェクトがまだ有効かどうかを示す ApplicationUser オブジェクトにフラグがあるソリューションに移行することを考えている理由です。しかし、これにはApplicationUserの各メソッドで有効性を確認する必要があり、私は好きではありません。
ここで見逃している何らかの解決策やパターンがあるかどうか疑問に思っていました。