Antwort

4

Nicht sicher, ob ich Ihre Frage hier verstehe oder nicht, aber ich glaube, dass Ihre Annahme falsch ist.

MembershipUser wird von System.Web.Security verwendet, um einen Benutzer über den MembershipProvider zu authentifizieren, den Sie in Ihrer Webkonfiguration festgelegt haben. Wenn Sie anrufen ...

MembershipUser user = Membership.GetUser(username); 

wird Ihre Mitgliedschaft Anbieter den Datenspeicher abzufragen, wo Sie Ihre Benutzerinformationen zu halten (eine SQL-Datenbank, Active Directory, etc ..) und geben die Membership Daten zurück sotred für diesen Benutzernamen ein.

Wenn Sie in Ihrer Anwendung eine andere Klasse definiert haben, die die IPrincipal-Schnittstelle implementiert und ein Objekt dieses Typs instanziiert hat, bedeutet dies nicht notwendigerweise, dass Ihr MembershipUser-Objekt und Ihr benutzerdefiniertes Objekt Daten gemeinsam nutzen (außer natürlich zugewiesen die Referenz programmatisch)

Vielleicht würde es helfen, wenn Sie ein Codebeispiel zur Verfügung gestellt klären

+1

ich verstehe, dass, wenn Sie manuell Hauptobjekt erstellen (Objekt, das IPrincipal Schnittstelle implementiert), die Sie auch einen Bezug zwischen den beiden erstellen müssen programmaticaly Objekte. Aber in meiner ursprünglichen Frage bezog ich mich auf das Prinzipalobjekt, das den Sicherheitskontext des aktuellen Benutzers darstellt und automatisch von Asp.Net erstellt wird, wenn ich die Formularauthentifizierung verwende. Ich dachte, in diesem Fall kümmert sich Asp.Net auch um das "Synchronisieren" der beiden Objekte? – SourceC

+1

Ich verstehe immer noch nicht, was Sie zwischen den beiden Objekten "synchronisiert" haben wollen? Sie teilen nicht wirklich etwas - die IPrincipal-Implementierung enthält eine IIdentity - aber das ist es .... –

+3

IPrincipal im Kontext von Asp.net (HttpContext.User) ist der Benutzer, der den aktuellen Prozess auf dem Computer ausführt. MembershipUser ist ein Anwendungsbenutzer, den Sie irgendwo in einem Datenspeicher speichern. Während der Autorisierung können Sie den HttpContext.User festlegen, indem Sie dem FormsAuthentication-Ticket Werte aus Ihrem MembershipUser zuweisen. Die beiden Objekte, auf die Sie sich beziehen, werden jedoch nie automatisch synchronisiert. –