7

IPrincipalインターフェイスを実装しているMembershipUserオブジェクトとオブジェクトは、オブジェクトの特定の情報が変更されたときに他のオブジェクトも適切に変更されるという意味で「接続」されていると仮定します。MembershipUserとIPrincipalオブジェクトの関係

答えて

4

私はあなたの質問をここで理解するかどうかわかりませんが、あなたの前提が間違っていると思います。

MembershipUserは、System.Web.Securityによって、Web設定で設定したMembershipProviderを介してユーザーを認証するために使用されます。お問い合わせの際...

MembershipUser user = Membership.GetUser(username); 

あなたのメンバシッププロバイダを使用すると、(などSQLデータベース、Active Directoryの、...)ユーザー情報を保持するデータストアを照会し、そのユーザ名のためsotred Memberhsipデータをバック返されます。

アプリケーションでIPrincipalインターフェイスを実装する別のクラスを定義し、そのタイプのオブジェクトをインスタンス化しても、必ずしもMembershipUserオブジェクトとカスタムオブジェクトがデータを共有するわけではありません(ただし、プログラム的に参照)

あなたは、コードの例を提供した場合多分それは私が手動で主な目的(IPrincipalインターフェイスを実装するオブジェクト)を作成した場合は、2つの間の参照を作成programmaticalyする必要があることを理解

+1

を明確に役立つだろうオブジェクト。しかし私の最初の質問では、現在のユーザーのセキュリティコンテキストを表すプリンシパルオブジェクトを参照していました(より具体的ではないと申し訳ありません)。また、フォーム認証を使用するときにAsp.Netによって自動的に作成されます。私はその場合、Asp.Netも2つのオブジェクトを「同期させる」ことを考えていましたか? – SourceC

+1

私はまだあなたが2つのオブジェクト間で "同期"したいものを理解していませんか?彼らは実際に何も共有していません - IPrincipalの実装にはIIdentityが含まれていますが、それについては... –

+3

Asp.net(HttpContext.User)のコンテキスト内のIPrincipalは、マシン上で現在のプロセスを実行しているユーザーです。 MembershipUserは、データストアのどこかに格納するアプリケーションユーザーです。承認中に、HttpContext.Userを、MembershipUserの値をFormsAuthenticationチケットに割り当てることによって設定できますが、参照している2つのオブジェクトは決して自動的には同期されません。 –

関連する問題