Frage

I Speichern von Benutzerdaten in einer MSSQL Tabelle namens Benutzer. Was ich will, ist zugänglich, alle Daten des Benutzers zu haben, um tatsächlich angemeldeten Benutzer (E-Mail, Adresse, Telefon, wenn der Benutzer Teilnehmer usw.).

Ich will nicht, Profile verwenden, so ich benutzerdefinierte MembershipProvider verwenden entschieden (oder wissen Sie etwas besser, weniger schmerzhafte Art und Weise?).

Was ich nicht verstehe, ist MembershipUser und Mitgliedschaft. Wenn ich von MembershipProvider, in überschriebenen Methoden Inherite kontrolliere ich den Zugriff von Daten von und zu Datenbank.

Aber wie verwende ich geerbt Klasse von MembershipProvider? Wenn ich durch die Verwendung Mitgliedschaft Benutzer authentifizieren will, muss ich tun:

if(Membership.ValidateUser(string username, string password))
{
   FormsAuthentication.RedirectFromLoginPage(string username, string password);
}

Aber wo ist Klasse von MembershipProvider geerbt? Und wenn Sie eine Klasse von MembershipUser geerbt benutzen? Und was ist Beziehung zwischen Mitgliedschaft und MembershipProvider?

War es hilfreich?

Lösung

Es ist zwar nicht kristallklar auf MSDN , es ist nicht alles so kompliziert. Es gibt ein Trio der Klassen:

  • Mitgliedschaft: stellt Hilfsmethoden und einen Einstiegspunkt - im Grunde ein Singleton (statische Klasse).
  • MembershipProvider. Wirkt als Datenzugriffsmethode und Fabrik für MembershipUser Objekte
  • MembershipUser: steht für einen einzelnen Benutzer
  • .

Ein benutzerdefinierter MembershipProvider (durch Code in Membership) ausgewählt, basierend auf Ihrer Anwendung Konfiguration: Konfiguration / system.web / Mitgliedschaft. Hier ist, wo Sie Ihren Provider ins Spiel bringen. Ihre MembershipProvider Implementierung muss geschrieben werden, um alle Daten, speichern Sie für die Nutzer bevorzugen zugreifen: Ihre Benutzer-Tabelle in diesem Fall.

MembershipUser Objekte werden nur durch Ihre MembershipProvider erstellt. Die MembershipProvider.ValidateUser () -Methode sollten überprüfen, gegen Ihre Datenspeicher, die der Benutzer / Passwort-Kombination gültig ist. Die MembershipProvider.GetUser () ruft Benutzerinformationen - verwenden Sie es in einem Zugriff geschützt Seite und übergeben System.Web.HttpContext.Current.User.Identity.Name als aktuelle authentifizierte Benutzer.

Das heißt, ich hoffe, dass Sie sicher, dass Sie nicht wollen? verwenden Profiles , und wirklich wollen, eine separate Benutzertabelle haben. Wenn Sie eine interne Anwendung schreiben, mit einem vorhandenen Active Directory oder gesalzen Hashes ? Wie schützen Sie die Benutzertabelle vor Manipulation? MSDN deckt nur einen Bruchteil der Sicherheitsfragen rel="nofollow Sie begegnen könnten.

Andere Tipps

Der spezifische Anbieter verwendet wird, auf der web.config gesteuert. Sie können tatsächlich mehr als 1 Anbieter gesetzt und haben eine Standard. Check: http://msdn.microsoft.com/en-us/library/ 6e9y4s5t.aspx .

Wenn so genannt, die Mitgliedschaft nutzt nur den Standardanbieter. Sie würden MembershipUser erben, wenn Sie zusätzliche Informationen für den Benutzer zur Verfügung zu stellen wollen, aber das wird den Rest des Codes auf Ihren spezifischen Provider binden.

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