Freigeben über


Membership

von Microsoft

Hinweis

Seit diesem Artikel wurden die ASP.NET-Mitgliedschaftsanbieter von ASP.NET Identity abgelöst. Es wird dringend empfohlen, Apps so zu aktualisieren, dass sie die ASP.NET Identity-Plattform anstelle der Mitgliedschaftsanbieter verwenden, die zum Zeitpunkt des Schreibens dieses Artikels vorgestellt wurden. ASP.NET Identity bietet eine Reihe von Vorteilen gegenüber dem ASP.NET Mitgliedschaftssystem, darunter:

  • Bessere Leistung
  • Verbesserte Erweiterbarkeit und Testbarkeit
  • Unterstützung für OAuth, OpenID Connect und zweistufige Authentifizierung
  • Unterstützung der anspruchsbasierten Identität
  • Bessere Interoperabilität mit ASP.Net Core

ASP.NET Mitgliedschaft baut auf dem Erfolg des Formularauthentifizierungsmodells von ASP.NET 1.x auf. ASP.NET Formularauthentifizierung bietet eine bequeme Möglichkeit, ein Anmeldeformular in Ihre ASP.NET Anwendung zu integrieren und Benutzer anhand einer Datenbank oder eines anderen Datenspeichers zu überprüfen.

ASP.NET Mitgliedschaft baut auf dem Erfolg des Formularauthentifizierungsmodells von ASP.NET 1.x auf. ASP.NET Formularauthentifizierung bietet eine bequeme Möglichkeit, ein Anmeldeformular in Ihre ASP.NET Anwendung zu integrieren und Benutzer anhand einer Datenbank oder eines anderen Datenspeichers zu überprüfen. Die Member der FormsAuthentication-Klasse ermöglichen es, Cookies für die Authentifizierung zu verarbeiten, nach einer gültigen Anmeldung zu suchen, einen Benutzer abzumelden usw. Die Implementierung der Formularauthentifizierung in einer ASP.NET 1.x-Anwendung kann jedoch eine angemessene Menge an Code erfordern.

Die Mitgliedschaft in ASP.NET 2.0 ist ein wichtiger Fortschritt gegenüber der alleinigen Verwendung der Formularauthentifizierung. (Die Mitgliedschaft ist am stabilsten, wenn sie mit der Formularauthentifizierung gekoppelt ist, aber die Verwendung der Formularauthentifizierung ist keine Anforderung.) Wie Sie bald sehen werden, können Sie ASP.NET Mitgliedschaft und die Anmeldesteuerelemente in ASP.NET 2.0 verwenden, um ein leistungsfähiges Mitgliedschaftssystem zu implementieren, ohne überhaupt viel Code zu schreiben.

Implementieren der Mitgliedschaft in ASP.NET 2.0

Die Mitgliedschaft wird in vier Schritten implementiert. Beachten Sie, dass es viele Unterschritte gibt, die beteiligt sind, sowie optionale Konfiguration, die ebenfalls implementiert werden können. Diese Schritte sollen das Gesamtbild der Konfiguration der Mitgliedschaft veranschaulichen.

  1. Erstellen Sie Ihre Mitgliedschaftsdatenbank (wenn SQL Server als Mitgliedschaftsspeicher verwendet wird.)

  2. Geben Sie die Mitgliedschaftsoptionen in ihren Anwendungskonfigurationsdateien an. (Die Mitgliedschaft ist standardmäßig aktiviert.)

  3. Bestimmen Sie den Typ des Mitgliedschaftsspeichers, den Sie verwenden möchten. Folgende Optionen stehen zur Verfügung:

    • Microsoft SQL Server (Version 7.0 oder höher)
    • Active Directory Store
    • Benutzerdefinierter Mitgliedschaftsanbieter
  4. Konfigurieren Sie die Anwendung für ASP.NET Formularauthentifizierung. Auch hier ist die Mitgliedschaft darauf ausgelegt, die Formularauthentifizierung zu nutzen, aber die Verwendung der Formularauthentifizierung ist keine Voraussetzung.

  5. Definieren Sie Benutzerkonten für die Mitgliedschaft, und konfigurieren Sie Bei Bedarf Rollen.

Erstellen der Mitgliedschaftsdatenbank

Wenn Sie SQL Server 7.0 oder höher als Mitgliedschaftsspeicher verwenden, können Sie das Hilfsprogramm aspnet_regsql (am einfachsten über die Visual Studio .NET 2005-Eingabeaufforderung verfügbar) verwenden, um Ihre Datenbank zu konfigurieren. Das hilfsprogramm aspnet_regsql kann als Eingabeaufforderungstool oder über einen GUI-Assistenten verwendet werden. Die Assistentenmethode ist die einfachste Möglichkeit, Ihre Datenbank zu konfigurieren. Führen Sie einfach den folgenden Befehl aus, um auf den Assistenten zuzugreifen:

aspnet_regsql W

Nachdem Sie diesen Befehl ausgeführt haben, wird ihnen der ASP.NET SQL Server Setup-Assistent angezeigt, wie unten gezeigt.

Screenshot: A S P dot NET S Q L Server Setup-Assistent

Abbildung 1

Der ASP.NET SQL Server-Setup-Assistent erstellt die Website in der instance, die Sie im Assistenten angeben. ASP.NET verwenden jedoch die Verbindungszeichenfolge in der machine.config-Datei, um eine Verbindung mit Ihrer Datenbank herzustellen. Standardmäßig verweist diese Verbindungszeichenfolge auf einen SQL Server 2005-instance. Wenn Sie also einen SQL Server 2000- oder SQL Server 7.0-instance verwenden, müssen Sie die Verbindungszeichenfolge in der machine.config-Datei ändern. Diese Verbindungszeichenfolge kann hier gefunden werden:

<configuration>
    <connectionStrings>
      <add name="LocalSqlServer"
         connectionString="data source=(local);
         Integrated Security=SSPI;Initial Catalog=aspnetdb;"  
         providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

Wenn Sie die Verbindungszeichenfolge nicht ändern, erhalten Sie ASP.NET leider keinen beschreibenden Fehler. Es wird sich nur weiterhin beschweren, dass Sie die Datenbank nicht erstellt haben. Im obigen Fall habe ich die Verbindungszeichenfolge so geändert, dass sie auf meine lokale SQL Server 2000 instance verweist.

Angeben der Konfiguration und Hinzufügen von Benutzern und Rollen

Der nächste Schritt beim Konfigurieren der Mitgliedschaft besteht darin, der web.config-Datei der Anwendung die erforderlichen Informationen hinzuzufügen. In ASP.NET 1.x war das Ändern der web.config-Datei aufgrund der Verwendung von lowerCamelCase und des Fehlens von Intellisense manchmal schwierig. Visual Studio .NET 2005 vereinfacht die Aufgabe mit Intellisense für Konfigurationsdateien erheblich, aber ASP.NET 2.0 geht noch einen Schritt weiter, indem eine Webschnittstelle zum Bearbeiten von Konfigurationsdateien bereitgestellt wird.

Sie können die Weboberfläche starten, indem Sie auf der Symbolleiste Projektmappen-Explorer wie unten dargestellt auf die Schaltfläche ASP.NET Konfiguration klicken. Sie können die Weboberfläche auch über Popups starten, die beim Einfügen von Anmeldesteuerelementen angezeigt werden.

Screenshot: Projektmappen-Explorer Symbolleiste mit ausgewählter web.config

Abbildung 2

Dadurch wird das unten gezeigte ASP.NET-Websiteverwaltungstool gestartet. Die ASP.NET Websiteverwaltung ist eine Benutzeroberfläche mit vier Registerkarten, die die Verwaltung von Anwendungseinstellungen vereinfacht. Die folgenden Registerkarten sind verfügbar:

  • Home
  • Sicherheit Konfigurieren Sie Benutzer, Rollen und Zugriff.
  • Anwendung Konfigurieren Sie Anwendungseinstellungen.
  • Anbieter Konfigurieren und testen Sie Ihren Anwendungsmitgliedschaftsanbieter.

Mit dem Websiteverwaltungstool können Sie ganz einfach neue Benutzer erstellen, neue Rollen erstellen und Benutzer und Rollen verwalten. Diese Funktion ist in der Windows-Benutzeroberfläche nicht verfügbar. Mit der Windows-Schnittstelle können Sie einfach Autorisierungseinstellungen definieren und Anbieter hinzufügen, löschen und verwalten, Funktionen, die sich nicht im Websiteverwaltungstool befinden.

Um die Windows-Benutzeroberfläche zu starten, öffnen Sie das Snap-In Internetinformationsdienste, klicken Sie mit der rechten Maustaste auf Ihre Anwendung, und wählen Sie Eigenschaften aus. Klicken Sie auf die Registerkarte ASP.NET und dann auf die Schaltfläche Konfiguration bearbeiten. (Die Anwendung muss unter ASP.NET 2.0 ausgeführt werden, damit die Schaltfläche Konfiguration bearbeiten aktiviert wird. Sie können die ASP.NET Version auch im Dialogfeld ASP.NET konfigurieren.) Das Dialogfeld ASP.NET Konfigurationseinstellungen wird wie unten dargestellt angezeigt.

Screenshot: Registerkarte Allgemein im Dialogfeld A S p dot N E T Konfigurationseinstellungen

Abbildung 3

Auf der Registerkarte Allgemein werden Verbindungszeichenfolgen und Anwendungseinstellungen aufgeführt. Alle Einstellungen in Kursiv werden in einer übergeordneten Konfigurationsdatei (entweder die machine.config oder ein web.config auf höherer Ebene) definiert, und Einstellungen, die nicht kursiv sind, stammen aus der Anwendungskonfigurationsdatei. Wenn eine Einstellung auf Anwendungsebene hinzugefügt, entfernt oder bearbeitet wird, werden ASP.NET die Einstellung auf den Anwendungsebenen web.config hinzufügen, entfernen oder ändern, anstatt die Einstellung aus der Konfigurationsdatei zu entfernen, von der sie geerbt wird.

Die Registerkarte Authentifizierung ist unten dargestellt. Hier konfigurieren Sie Ihre Mitgliedschaftseinstellungen. Formularauthentifizierungseinstellungen, Mitgliedschaftsanbieter und Rollenanbieter können hier konfiguriert werden.

Screenshot: Registerkarte

Abbildung 4

Implementieren einer Mitgliedschaft in Ihrer Anwendung

Die einfachste Möglichkeit, ASP.NET 2.0-Mitgliedschaft in Ihrer Anwendung zu implementieren, besteht darin, die bereitgestellten Anmeldesteuerelemente zu verwenden. Mit dieser Methode können Sie die Grundlagen der ASP.NET 2.0-Mitgliedschaft implementieren, ohne überhaupt Code zu schreiben.

Die folgenden Anmeldesteuerelemente sind in ASP.NET 2.0 verfügbar:

Anmeldesteuerung

Das Login-Steuerelement bietet eine Schnittstelle, über die sich jemand bei Ihrem Mitgliedschaftssystem anmelden kann. Es bietet Ihnen ein Textfeld für Benutzername und Kennwort sowie eine Anmeldeschaltfläche. Viele andere gängige Features wie ein Link zur Registrierung für Personen, die dies noch nicht getan haben, ein Kontrollkästchen, das es dem Benutzer ermöglicht, sich bei nachfolgenden Besuchen automatisch anzumelden, einen Link für eine Kennworterinnerung usw. Alle Features des Login-Steuerelements können über die Eigenschaften des Steuerelements angepasst werden.

In ASP.NET 1.x mussten Entwickler eine angemessene Menge an Code schreiben, um bei Verwendung der Formularauthentifizierung nachzuschlagen. Mit ASP.NET 2.0-Mitgliedschaft können Sie Benutzer überprüfen, ohne überhaupt Code zu schreiben. ASP.NET übernimmt automatisch die Suche des Benutzers für Sie. (Wenn Sie das Login-Steuerelement verwenden, ohne ASP.NET Mitgliedschaft zu verwenden, können Sie die OnAuthenticate-Methode verwenden, um den Benutzer zu überprüfen.)

LoginView-Steuerelement

Das LoginView-Steuerelement ist ein vorlagenbasiertes Steuerelement, das standardmäßig zwei Vorlagen bereitstellt. die AnonymousTemplate und die LoggedInTemplate. Die angezeigte Vorlage wird dadurch bestimmt, ob der Benutzer bei Ihrem Mitgliedschaftssystem angemeldet ist oder nicht. Dieses Steuerelement wird in der Regel verwendet, um ein Anmeldesteuerelement anzuzeigen, wenn sich ein Benutzer noch nicht angemeldet hat, und ein LoginStatus-Steuerelement und/oder andere Anmeldesteuerelemente, wenn sich der Benutzer angemeldet hat. Wenn Sie die Rollenverwaltung in Ihrer ASP.NET-Anwendung verwenden, kann das LoginView-Steuerelement eine bestimmte Vorlage basierend auf der Benutzerrolle anzeigen. (Weitere Informationen zu ASP.NET Rollenverwaltung werden später behandelt.)

PasswordRecovery-Steuerelement

Mit dem PasswordRecovery-Steuerelement können Benutzer eine E-Mail mit ihrem aktuellen Kennwort erhalten oder ihr Kennwort zurücksetzen. Klartext und verschlüsselte Kennwörter können wiederhergestellt und per E-Mail an Benutzer gesendet werden. Wenn das Kennwort gehasht ist, kann es nicht wiederhergestellt werden. Stattdessen muss der Benutzer eine Kennwortzurücksetzung durchführen.

LoginStatus-Steuerelement

Das LoginStatus-Steuerelement wird verwendet, um benutzern, die nicht angemeldet sind, einen Anmeldeindikator und einen Abmeldeindikator für benutzer anzuzeigen, die derzeit angemeldet sind. Die Request.IsAuthenticated-Eigenschaft wird verwendet, um zu bestimmen, welcher Indikator angezeigt werden soll. Der vom LoginStatus-Steuerelement angezeigte Indikator kann Text (implementiert über die Eigenschaften LoginText und LogoutText ) oder Bilder (implementiert über die Eigenschaften LoginImageUrl und LogoutImageUrl ) sein.

Wenn sich ein Benutzer über das LoginStatus-Steuerelement abmeldet, wird er an die URL weitergeleitet, die von der LogoutPageUrl-Eigenschaft angegeben ist. Wenn diese Eigenschaft nicht festgelegt ist, wird die aktuelle Seite aktualisiert. Da die Website wahrscheinlich durch die Formularauthentifizierung geschützt ist, leitet die Aktualisierung der aktuellen Seite den Benutzer zur Anmeldeseite für die Website um.

LoginName-Steuerelement

Das LoginName-Steuerelement zeigt den Benutzernamen des Benutzers an, der derzeit bei der Website angemeldet ist.

CreateUserWizard-Steuerelement

Das CreateUserWizard-Steuerelement bietet Benutzern eine bequeme Möglichkeit, sich für Ihr Mitgliedschaftssystem zu registrieren. Sie können Schritte (implementiert als Sammlung von WizardSteps) über die unten gezeigte Schnittstelle hinzufügen.

Screenshot: Dialogfeld

Abbildung 5

CreateUserWizard ist ein vorlagenbasiertes Steuerelement, das von der Wizard-Klasse abgeleitet ist und die folgenden Vorlagen bereitstellt:

  • Headertemplate Diese Vorlage steuert die Darstellung des Headers des Assistenten.
  • SidebarTemplate Diese Vorlage steuert die Darstellung der Seitenleiste des Assistenten.
  • Startnavigationtemplate Diese Vorlage steuert die Darstellung der Navigation des Assistenten im Startschritt.
  • StepNavigationTemplate Diese Vorlage steuert die Darstellung des Navigationsbereichs, wenn sich nicht im Start- oder Endschritt befindet.
  • FinishNavigationTemplate Diese Vorlage steuert die Darstellung des Navigationsbereichs beim Abschlussschritt.

Darüber hinaus erstellt ASP.NET für jeden Schritt, den Sie dem Assistenten hinzufügen, eine benutzerdefinierte Vorlage, die sowohl eine ContentTemplate als auch eine CustomNavigationTemplate für diesen Schritt enthält. Ausführliche Informationen zum Anpassen des CreateUserWizard finden Sie in der VS.NET 2005-Dokumentation:

ChangePassword-Steuerelement

Mit dem ChangePassword-Steuerelement können Benutzer ihr Kennwort ändern. Wenn die DisplayUserName-Eigenschaft true ist (standardmäßig false), kann der Benutzer sein Kennwort ändern, wenn er nicht angemeldet ist. Wenn der Benutzer bereits angemeldet ist und die DisplayUserName-Eigenschaft true ist, kann der Benutzer das Kennwort eines anderen Benutzers ändern, der nicht angemeldet ist, sofern er die Benutzer-ID dieses Benutzers kennt.

Beachten Sie, dass Sie sicherstellen müssen, dass die Seite, auf der das ChangePassword-Steuerelement angezeigt wird, anonymen Zugriff zulässt, wenn Benutzer Kennwörter ändern können, ohne sich anmelden zu müssen. Natürlich müssen Benutzer ihr altes Kennwort angeben, um ihr Kennwort zu ändern.

Rollenverwaltung

Mit der Rollenverwaltung können Sie Benutzer einer bestimmten Rolle zuweisen und dann den Zugriff auf bestimmte Dateien oder Ordner basierend auf dieser Rolle einschränken. Die Rollenverwaltung stellt auch eine API bereit, mit der Sie die Rolle einer Person programmgesteuert bestimmen oder alle Benutzer in einer bestimmten Rolle ermitteln und entsprechend reagieren können.

Die Rollenverwaltung ist keine Anforderung in ASP.NET Mitgliedschaft, noch ist die Mitgliedschaft eine Voraussetzung für die Verwendung der Rollenverwaltung. Die beiden ergänzen sich jedoch gut, und es ist wahrscheinlich, dass Entwickler sie in Verbindung miteinander verwenden werden.

Um die Rollenverwaltung in Ihrer Anwendung zu aktivieren, nehmen Sie die folgende Änderung in Ihrer web.config-Datei vor:

<roleManager enabled="true" cacheRolesInCookie="true" cookieProtection="All" />

Wenn das cacheRolesInCookie-Attribut auf true festgelegt ist, speichert ASP.NET eine Benutzerrollenmitgliedschaft in einem Cookie auf dem Client zwischen. Dadurch können Rollensuchvorgänge ohne Aufrufe von RoleProvider erfolgen. Wenn Sie dieses Attribut verwenden, sollten Entwickler sicherstellen, dass das cookieProtection-Attribut auf All festgelegt ist. (Dies ist die Standardeinstellung.) Dadurch wird sichergestellt, dass die Cookie-Daten verschlüsselt sind, und trägt dazu bei, dass der Inhalt der Cookies nicht geändert wurde. Rollen können mithilfe des Websiteverwaltungstools hinzugefügt werden. Sie können auf einfache Weise Rollen definieren, den Zugriff auf Teile der Website basierend auf diesen Rollen konfigurieren und Rollen Benutzer zuweisen.

Screenshot: A S P dot N E T Web Site Administration Tool mit der Schaltfläche Rolle hinzufügen

Figur 6

Wie oben gezeigt, können neue Rollen hinzugefügt werden, indem Sie einfach den Namen der Rolle eingeben und dann auf Rolle hinzufügen klicken. Vorhandene Rollen können verwaltet oder gelöscht werden, indem Sie auf den entsprechenden Link in der Liste der vorhandenen Rollen klicken.

Wenn Sie eine Rolle verwalten, können Sie Benutzer hinzufügen oder entfernen, wie unten gezeigt.

Screenshot: A S P dot N E T Web Site Administration Tool mit der Schaltfläche Benutzer suchen

Abbildung 7

Durch Aktivieren des Kontrollkästchens Benutzer ist in Rolle können Sie einfach einen Benutzer zu einer bestimmten Rolle hinzufügen. ASP.NET aktualisiert Ihre Mitgliedschaftsdatenbank automatisch mit den entsprechenden Einträgen. Außerdem sollten Sie Zugriffsregeln für Ihre Anwendung konfigurieren. ASP.NET 1.x-Entwickler sind damit vertraut, dies über das <Autorisierungselement> in der web.config-Datei zu tun, und diese Option ist weiterhin in ASP.NET 2.0 verfügbar. Es ist jedoch einfacher, Zugriffsregeln mithilfe des Websiteverwaltungstools zu verwalten, wie unten gezeigt.

Screenshot: A S P dot N E T Web Site Administration-Tool mit unter Benutzer und Rollen ausgewählten Elementen

Abbildung 8

In diesem Fall ist der Ordner Verwaltung hervorgehoben (schwer zu erkennen, da das Tool ihn hellgrau hervor hebt), und der Rolle "Administratoren" wurde Zugriff gewährt. Alle anderen Benutzer werden abgelehnt. Sie können auf das Kopfsymbol klicken, um eine Regel auszuwählen, und dann die Schaltflächen Nach oben und Nach unten verwenden, um die Regeln anzuordnen. Wie beim ASP.NET <Autorisierungselements> werden Regeln in der Reihenfolge verarbeitet, in der sie angezeigt werden. Mit anderen Worten, wenn die Reihenfolge der Regeln im obigen Schuss umgekehrt würde, hätte niemand Zugriff auf den Ordner Verwaltung, da die erste Regel, auf die ASP.NET stoßen würde, die Regel wäre, die jedem den Ordner verweigert.

ASP.NET 2.0 fügt dem Ordner, für den Sie eine Zugriffsregel angeben, eine web.config Datei hinzu. Zugriffsregeln können über die Konfigurationsdatei oder über das Websiteverwaltungstool bearbeitet werden. Mit anderen Worten, das Websiteverwaltungstool ist einfach eine Schnittstelle, über die die Konfigurationsdatei in einer benutzerfreundlichen Umgebung bearbeitet werden kann.

Verwenden von Rollen im Code

Die API für die Rollenverwaltung wurde seit Version 1.x nicht geändert. Die IsInRole-Methode wird verwendet, um zu bestimmen, ob sich ein Benutzer in einer bestimmten Rolle befindet.

if (User.IsInRole(Administrators)) {
    btnManageSite.Visible = true;
}

ASP.NET erstellt auch eine RolePrincipal-instance als Mitglied des aktuellen Kontexts. Das RolePrincipal-Objekt kann wie folgt verwendet werden, um alle Rollen abzurufen, zu denen der Benutzer gehört:

string[] userRoles = ((RolePrincipal)User).GetRoles();

Verwenden von RoleGroups mit dem LoginView-Steuerelement

Nachdem Sie sich nun mit Rollenverwaltung und Mitgliedschaft aus der Lage befassen, können Sie kurz erläutern, wie das LoginView-Steuerelement diese Funktion in ASP.NET 2.0 nutzt. Wie bereits erwähnt, ist das LoginView-Steuerelement ein vorlagenbasiertes Steuerelement, das standardmäßig zwei Vorlagen enthält. die AnonymousTemplate und die LoggedInTemplate. Im Dialogfeld LoginView-Aufgaben befindet sich ein Link (siehe unten), mit dem Sie RoleGroups bearbeiten können.

Screenshot: Steuerelement Anmeldeansicht im Dialogfeld Aufgaben der Anmeldeansicht mit ausgewählter Dropdownliste und ausgewählter Rollengruppe

Abbildung 9

Jedes RoleGroup-Objekt enthält ein Array von Zeichenfolgen, das definiert, auf welche Rollen RoleGroup angewendet wird. Um dem LoginView-Steuerelement eine neue RoleGroup hinzuzufügen, klicken Sie auf den Link Rollengruppen bearbeiten. In der obigen Abbildung sehen Sie, dass ich eine neue RoleGroup für Administratoren hinzugefügt habe. Wenn Sie diese Rollengruppe (RoleGroup[0]) aus der Dropdownliste Ansichten auswählen, kann ich eine Vorlage konfigurieren, die nur Mitgliedern der Rolle "Administratoren" angezeigt wird. In der folgenden Abbildung habe ich eine neue Rollengruppe hinzugefügt, die für Mitglieder der Rolle "Vertrieb" und "Verteilung" gilt. Dadurch wird der Dropdownliste Ansichten im Dialogfeld Anmeldeaufgaben eine zweite Rollengruppe hinzugefügt, und alles, was dieser Vorlage hinzugefügt wird, wird von jedem Benutzer in der Rolle "Vertrieb" oder "Verteilung" angezeigt.

Screenshot: Dialogfeld

Abbildung 10

Überschreiben des vorhandenen Mitgliedschaftsanbieters

Es gibt mehrere Möglichkeiten, die Funktionalität von ASP.NET Mitgliedschaft zu erweitern. Zunächst können Sie offensichtlich die vorhandene Funktionalität der SqlMembershipProvider-Klasse ändern, indem Sie von ihr erben und ihre Methoden überschreiben. Wenn Sie beispielsweise ihre eigene Funktionalität implementieren möchten, wenn Benutzer erstellt werden, können Sie Eine eigene Klasse erstellen, die wie folgt von SqlMembershipProvider erbt:

public class jForumMembershipProvider : SqlMembershipProvider {
    public jForumMembershipProvider() {

    }
    public override MembershipUser CreateUser(
    string username,
    string password,
    string email,
    string passwordQuestion,
    string passwordAnswer,
    bool isApproved,
    object providerUserKey,
    out MembershipCreateStatus status) {
        // your own implementation
        return base.CreateUser(
        username,
        password,
        email,
        passwordQuestion,
        passwordAnswer,
        isApproved,
        providerUserKey,
        out status);
    }
}

Wenn Sie hingegen Einen eigenen Anbieter erstellen möchten (z. B. um Ihre Mitgliedschaftsinformationen in einer Access-Datenbank zu speichern), können Sie einen eigenen Anbieter erstellen.

Erstellen eines eigenen Mitgliedschaftsanbieters

Um Ihren eigenen Mitgliedschaftsanbieter zu erstellen, müssen Sie zunächst eine Klasse erstellen, die von der MembershipProvider-Klasse erbt. Wenn Sie VB.NET verwenden, fügt Visual Studio 2005 die Stubs für alle Methoden hinzu, die Sie überschreiben müssen. Wenn Sie C# verwenden, können Sie die Stubs hinzufügen.

Sie müssen Folgendes überschreiben:

  • ApplicationName-Eigenschaft
  • ChangePassword-Funktion
  • ChangePasswordQuestionAndAnswer-Funktion
  • CreateUser-Funktion
  • DeleteUser-Funktion
  • EnablePasswordReset-Eigenschaft
  • EnablePasswordRetrieval-Eigenschaft
  • FindUsersByEmail-Funktion
  • FindUsersByName-Funktion
  • GetAllUsers-Funktion
  • GetNumberOfUsersOnline-Funktion
  • GetPassword-Funktion
  • GetUser-Funktion
  • GetUserNameByEmail-Funktion
  • MaxInvalidPasswordAttempts-Eigenschaft
  • MinRequiredNonAlphanumericCharacters-Eigenschaft
  • MinRequiredPasswordLength-Eigenschaft
  • PasswordAttemptWindow-Eigenschaft
  • PasswordFormat-Eigenschaft
  • PasswordStrengthRegularExpression-Eigenschaft
  • RequiresQuestionAndAnswer-Eigenschaft
  • RequiresUniqueEmail-Eigenschaft
  • ResetPassword-Funktion
  • Entsperren der Benutzerfunktion
  • UpdateUser-Funktion
  • ValidateUser-Funktion

Das ist eine ziemliche Liste, die als C#-Entwickler implementiert werden muss. Möglicherweise ist es einfacher, die -Klasse in VB.NET ohne Implementierung zu erstellen und dann .NET Reflector oder ein ähnliches Tool zu verwenden, um den Code in C# zu konvertieren.

Die Verbindungszeichenfolge und andere Eigenschaften sollten in der Initialize-Methode auf ihre Standardwerte festgelegt werden. (Die Initialize-Methode wird ausgelöst, wenn der Anbieter zur Laufzeit geladen wird.) Der zweite Parameter für die Initialize-Methode ist vom Typ System.Collections.Specialized.NameValueCollection und ist ein Verweis auf das <add-Element> , das Ihrem benutzerdefinierten Anbieter in der web.config-Datei zugeordnet ist. Dieser Eintrag sieht wie folgt aus:

<system.web>
  <authentication mode="Forms"/>
  <membership
  defaultProvider="jForumCustomMembershipProvider" >
    <providers>
      <add name="jForumCustomMembershipProvider"
      type="jForumCustomMembershipProvider"
      requiresQuestionAndAnswer="true"
      connectionString="Provider=Microsoft.Jet.
        OLEDB.4.0;Data Source=C:\jForumCustomMembershipProvider\
        App_Data\Members.mdb;Persist Security
        Info=False"
        />
    </providers>
  </membership>
</system.web>

Hier sehen Sie ein Beispiel für die Initialize-Methode.

public override void Initialize(string name,
    System.Collections.Specialized.NameValueCollection config) {

    if (config["requiresQuestionAndAnswer"])
        _requiresQuestionAndAnswer = true;
    _connString = config["connectionString"];
    base.Initialize(name, config);
}

Um den Benutzer beim Übermitteln Ihres Anmeldeformulars zu überprüfen, müssen Sie die ValidateUser-Methode verwenden. Diese Methode wird ausgelöst, wenn der Benutzer im Anmeldesteuerelement auf die Anmeldeschaltfläche klickt. Sie platzieren Ihren Code, der die Benutzersuche durchführt, in dieser Methode.

Wie Sie sehen können, ist das Schreiben eines eigenen Mitgliedschaftsanbieters nicht schwierig und ermöglicht es Ihnen, diese leistungsstarke Funktionalität von ASP.NET 2.0 zu erweitern.