Frage

In einer Website, muss ich die Mitgliedschaft und die Authentifizierung integrieren. Deshalb möchte ich die Funktionalität von ASP.NET-Mitgliedschaft verwenden, aber ich habe andere benutzerdefinierte stuff, dass ein „Benutzer“ zu tun hat.

Also ich bin hier mit meinem Bleistift und Papier sitzen, Linien für meine Domain-Modell Zeichnung ... Und wie kann ich die ASP.Net Mitgliedschaft am besten nutzen, sondern erweitern es meine Bedürfnisse zu füllen?

Soll ich eine Klasse erstellen, die von einem MembershipUser erbt und erweitern es mit eigenen Eigenschaften und Methoden (und speichern diese in einer separaten Tabelle). Oder soll ich lasse die MembershipUser eine Eigenschaft sein, auf meinem benutzerdefinierten Benutzer / Client-Objekt?

Was wäre eine gute und solide Art und Weise, dies zu tun?

War es hilfreich?

Lösung

Ich habe darüber nachgedacht und es gibt zwei Möglichkeiten, die geeignet erscheinen (natürlich gibt es mehr Möglichkeiten, es funktioniert).

Benutzerdefinierte Mitgliedschaftsanbieter

Sie den Mitgliedschaftsanbieter ändern, um Ihre eigenen zu verwenden und Ihre User-Objekt verwenden, um alle Informationen zu speichern.

Das Problem mit diesem ist, dass es eine Menge von Re-Implementierung der Dinge beinhaltet, die bereits gut von Asp.Net behandelt werden. Die gute Sache ist, dass Sie ein einzelnes Benutzerobjekt mit allen Details haben.

Link von einer Mitgliedschaft Benutzer auf Ihre Benutzer

Mit dieser Methode würden Sie den ursprünglichen Membership Provider verwenden die Benutzername und das Passwort zu handhaben, aber Sie verknüpfen Sie Ihr eigenes User-Objekt mit diesem mit so etwas wie der Benutzername durch einen Dienst zum Beispiel.

Es ist wirklich einfach einzurichten, müssen Sie nur einen Dienst erstellen, die wie folgt verwendet werden würden:

string userName = "Jon Skeet";
User user = new UserManagementServices().GetUserByUserName(userName);

Andere Tipps

beenden ich meinen eigenen Mitgliedschaft-Anbieter Schreiben auf und umgesetzt habe, dass in drei separaten Lösungen jetzt. Es ist extrem einfach und viel, viel eleganter als einen Benutzer zu einem MembershipUser Verknüpfung (die ich habe auch versucht).

Lesen Sie diese ...:

Erstellen von benutzerdefinierten Mitgliedschaftsanbieter für ASP.NET Website-Sicherheit

Und wenn Sie mehr erfahren möchten, sehen das Video (mit Sourcecode) .

Ich habe MembershipUser erweitert und meine eigene Version des SqlMembershipProvider meiner bestehenden Domain abzubilden, und seine Arbeit gut, jetzt in der Produktion.

MembershipUser ist im Wesentlichen ein Blick auf meine Benutzertabelle. Meine erweitert MembershipUser Klasse umfasst Profil / Account-Stil Eigenschaften anstelle der Verwendung des Standard SqlProfileProvider-System, das ein bisschen zerbrechlich ist.

war ich nicht in der Lage, die bestehende Mitgliedschaft Tabellen oder sprocs zu verwenden, aber schrieb meine eigenen. Zum Beispiel verwenden die SqlMembershipProvider eine GUID als opaken Schlüssel, aber das Produktionssystem verwendet ein einfaches altes int. Alle die Tage sind UTC usw. zu.

alle zusätzlichen Benutzer Funktionalität wird über die User-Domain nicht über Mitgliedschaft Methoden abgerufen.

HTH.

Im Moment arbeite ich durch die Microsoft ASP.NET 2.0 Membership-API Erweiterte Artikel von CoDe Magazine, die erläutert, wie die Mitgliedschaft API zu erweitern, indem ein Wrapper um die bestehenden Klassen zu schreiben. Hauptvorteil ist, dass Sie alle aus der Box Funktionalität halten und müssen nicht selbst neu schreiben, wie Sie es, wenn Sie einen benutzerdefinierten Anbieter implementieren. Der Quellcode bereitgestellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top