Freigeben über


Erstellen des Mitgliedschaftsschemas in SQL Server (C#)

von Scott Mitchell

Anmerkung

Seit dieser Artikel geschrieben wurde, wurden die Anbieter von ASP.NET Mitgliedschaften durch 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 dieses Artikels vorgestellt wurden. ASP.NET Identity hat 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 für Claims-basierte Identitäten
  • Bessere Interoperabilität mit ASP.Net Core

Code herunterladen oder PDF herunterladen

In diesem Lernprogramm werden zunächst Techniken zum Hinzufügen des erforderlichen Schemas zur Datenbank untersucht, um den SqlMembershipProvider zu verwenden. Danach untersuchen wir die wichtigsten Tabellen im Schema und besprechen deren Zweck und Wichtigkeit. Dieses Tutorial endet mit einem Blick darauf, wie Sie in einer ASP.NET-Anwendung angeben, welchen Anbieter das Mitgliedschafts-Framework verwenden sollte.

Einleitung

Die beiden vorherigen Lernprogramme untersuchten die Formularauthentifizierung, um Websitebesucher zu identifizieren. Das Framework für Formenauthentifizierung erleichtert es Entwicklern, Benutzer auf einer Website anzumelden und sie über Seitenbesuche hinweg durch die Nutzung von Authentifizierungstickets wiederzuerkennen. Die Klasse FormsAuthentication enthält Methoden zum Generieren des Tickets und zum Hinzufügen des Tickets zu den Cookies des Besuchers. Die FormsAuthenticationModule überprüft alle eingehenden Anforderungen und erstellt für Anfragen mit einem gültigen Authentifizierungsticket ein GenericPrincipal- und ein FormsIdentity-Objekt und ordnet sie der aktuellen Anforderung zu. Die Formularauthentifizierung ist lediglich ein Mechanismus, der einem Besucher bei der Anmeldung ein Authentifizierungsticket ausstellt und dieses Ticket bei nachfolgenden Anfragen analysiert, um die Identität des Benutzers festzustellen. Für eine Webanwendung zur Unterstützung von Benutzerkonten müssen wir weiterhin einen Benutzerspeicher implementieren und Funktionen zum Überprüfen von Anmeldeinformationen, registrieren neuer Benutzer und die Vielzahl anderer benutzerkontobezogener Aufgaben hinzufügen.

Vor ASP.NET 2.0 waren Entwickler verantwortlich für die Implementierung aller benutzerkontobezogenen Aufgaben. Glücklicherweise erkannte das ASP.NET-Team diesen Mangel und führte das Membership-Framework mit ASP.NET 2.0 ein. Das Mitgliedschaftsframework ist eine Reihe von Klassen im .NET Framework, die eine programmgesteuerte Schnittstelle zum Ausführen der wichtigsten Aufgaben im Zusammenhang mit Benutzerkonten bereitstellen. Dieses Framework basiert auf dem Anbietermodell, mit dem Entwickler eine angepasste Implementierung in eine standardisierte API anschließen können.

Wie im Security Basics und ASP.NET Support Tutorial erläutert, wird das .NET Framework mit zwei integrierten Mitgliedschaftsanbietern ausgeliefert: ActiveDirectoryMembershipProvider und SqlMembershipProvider. Wie der Name schon sagt, verwendet die SqlMembershipProvider eine Microsoft SQL Server-Datenbank als Benutzerspeicher. Um diesen Anbieter in einer Anwendung verwenden zu können, müssen wir dem Anbieter mitteilen, welche Datenbank als Speicher verwendet werden soll. Wie Sie sich vorstellen können, erwartet die SqlMembershipProvider, dass die Benutzerspeicherdatenbank über bestimmte Datenbanktabellen, Ansichten und gespeicherte Prozeduren verfügt. Dieses erwartete Schema muss der ausgewählten Datenbank hinzugefügt werden.

Dieses Tutorial beginnt mit der Untersuchung von Techniken zum Hinzufügen des notwendigen Schemas zur Datenbank, um das SqlMembershipProvider zu verwenden. Danach untersuchen wir die wichtigsten Tabellen im Schema und besprechen deren Zweck und Wichtigkeit. Dieses Tutorial endet mit einem Blick darauf, wie man einer ASP.NET-Anwendung mitteilt, welchen Anbieter das Framework für die Mitgliedschaft verwenden soll.

Fangen wir an!

Schritt 1: Entscheiden, wo der Benutzerspeicher platziert werden soll

Die Daten einer ASP.NET Anwendung werden häufig in einer Reihe von Tabellen in einer Datenbank gespeichert. Bei der Implementierung des SqlMembershipProvider Datenbankschemas müssen wir entscheiden, ob das Mitgliedschaftsschema in derselben Datenbank wie die Anwendungsdaten oder in einer alternativen Datenbank platziert werden soll.

Ich empfehle, das Mitgliedschaftsschema in derselben Datenbank wie die Anwendungsdaten aus den folgenden Gründen zu suchen:

  • Maintainability ' eine Anwendung, deren Daten in einer Datenbank gekapselt sind, ist einfacher zu verstehen, zu verwalten und bereitzustellen als eine Anwendung mit zwei separaten Datenbanken.
  • Relationale Integrität ' indem Sie die mit der Mitgliedschaft verbundenen Tabellen in derselben Datenbank wie die Anwendungstabellen unterbringen, ist es möglich, Fremdschlüssel-Beschränkungen zwischen den Primärschlüsseln in den mit der Mitgliedschaft verbundenen Tabellen und den damit verbundenen Anwendungstabellen zu erstellen.

Das Decoupieren des Benutzerspeichers und der Anwendungsdaten in separate Datenbanken ist nur sinnvoll, wenn Sie über mehrere Anwendungen verfügen, die jeweils separate Datenbanken verwenden, aber einen gemeinsamen Benutzerspeicher freigeben müssen.

Erstellen einer Datenbank

Die Anwendung, die wir seit dem zweiten Lernprogramm erstellen, benötigt noch keine Datenbank. Wir benötigen jetzt jedoch einen für den Benutzerspeicher. Lassen Sie uns eines erstellen und dann das vom SqlMembershipProvider-Anbieter benötigte Schema hinzufügen (siehe Schritt 2).

Anmerkung

In dieser Tutorial-Reihe verwenden wir eine Microsoft SQL Server 2005 Express Edition Datenbank, um unsere Anwendungstabellen und das SqlMembershipProvider Schema zu speichern. Diese Entscheidung wurde aus zwei Gründen getroffen: erstens, aufgrund seiner Kosten - kostenlos - die Express Edition ist die lesbarste Version von SQL Server 2005; Zweitens können SQL Server 2005 Express Edition-Datenbanken direkt im App_Data-Ordner der Webanwendung platziert werden, wodurch die Datenbank und Webanwendung in einer ZIP-Datei zusammengefasst und ohne spezielle Setupanweisungen oder Konfigurationsoptionen erneut bereitgestellt werden. Wenn Sie es vorziehen, eine Version von SQL Server zu verwenden, die nicht zur Express Edition gehört, können Sie dies kostenlos tun. Die Schritte sind nahezu identisch. Das SqlMembershipProvider Schema funktioniert mit jeder Version von Microsoft SQL Server 2000 und up.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den ordner App_Data, und wählen Sie "Neues Element hinzufügen" aus. (Wenn Sie im Projektmappen-Explorer keinen App_Data-Ordner sehen, klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer, wählen Sie "ASP.NET-Ordner hinzufügen" aus und wählen Sie App_Dataaus.) Öffnen Sie das Dialogfeld "Neues Element hinzufügen" und wählen Sie aus, eine neue SQL-Datenbank mit dem Namen SecurityTutorials.mdfhinzuzufügen. In diesem Lernprogramm fügen wir dieser Datenbank das SqlMembershipProvider Schema hinzu; in nachfolgenden Lernprogrammen erstellen wir zusätzliche Tabellen, um unsere Anwendungsdaten zu erfassen.

Fügen Sie eine neue SQL-Datenbank mit dem Namen SecurityTutorials.mdf zum App_Data-Ordner hinzu

Abbildung 1: Hinzufügen einer neuen SQL-Datenbank namens SecurityTutorials.mdf Datenbank zum ordner App_Data (Klicken, um das Bild in voller Größe anzuzeigen)

Das Hinzufügen einer Datenbank zum ordner App_Data schließt sie automatisch in die Datenbank-Explorer-Ansicht ein. (In der Nicht-Express Edition-Version von Visual Studio wird der Datenbank-Explorer als Server-Explorer bezeichnet.) Wechseln Sie zum Datenbank-Explorer, und erweitern Sie die gerade hinzugefügte SecurityTutorials Datenbank. Wenn der Datenbank-Explorer nicht auf dem Bildschirm angezeigt wird, wechseln Sie zum Menü "Ansicht", und wählen Sie "Datenbank-Explorer" aus, oder drücken Sie STRG+ALT+S. Wie in Abbildung 2 dargestellt, ist die SecurityTutorials Datenbank leer – sie enthält keine Tabellen, keine Ansichten und keine gespeicherten Prozeduren.

Die SecurityTutorials-Datenbank ist zurzeit leer

Abbildung 2: Die SecurityTutorials Datenbank ist zurzeit leer (Klicken, um das Bild in voller Größe anzuzeigen)

Schritt 2: Hinzufügen desSqlMembershipProvider-Schemas zur Datenbank

Die SqlMembershipProvider erfordert, dass eine bestimmte Anzahl von Tabellen, Ansichten und gespeicherten Prozeduren in der Datenbank des Benutzerspeichers festgelegt wird. Diese erforderlichen Datenbankobjekte können mit dem aspnet_regsql.exe Tool hinzugefügt werden. Diese Datei befindet sich im Ordner %WINDIR%\Microsoft.Net\Framework\v2.0.50727\.

Anmerkung

Das aspnet_regsql.exe-Tool bietet sowohl Befehlszeilenfunktionen als auch eine grafische Benutzeroberfläche. Die grafische Benutzeroberfläche ist benutzerfreundlicher und wird in diesem Lernprogramm untersucht. Die Befehlszeilenschnittstelle ist nützlich, wenn das Hinzufügen des SqlMembershipProvider Schemas automatisiert werden muss, z. B. in Buildskripts oder automatisierten Testszenarien.

Das aspnet_regsql.exe Tool wird verwendet, um ASP.NET-Anwendungsdienste zu einer bestimmten SQL Server-Datenbank hinzuzufügen oder zu entfernen. Die ASP.NET-Anwendungsdienste umfassen die Schemas für SqlMembershipProvider und SqlRoleProvider sowie die Schemas für die SQL-basierten Anbieter für andere ASP.NET 2.0 Frameworks. Wir müssen dem aspnet_regsql.exe Tool zwei Informationen zur Verfügung stellen:

  • Ob wir Anwendungsdienste hinzufügen oder entfernen möchten, und
  • Die Datenbank, aus der das Anwendungsdienstschema hinzugefügt oder entfernt werden soll

Bei der Aufforderung, welche Datenbank verwendet werden soll, bittet uns das aspnet_regsql.exe Tool, den Namen des Servers anzugeben, auf dem sich die Datenbank befindet, die Anmeldeinformationen für die Verbindung mit der Datenbank und den Datenbanknamen. Wenn Sie die Nicht-Express Edition von SQL Server verwenden, sollten Sie diese Informationen bereits kennen, da es sich um die gleichen Informationen handelt, die Sie über eine Verbindungszeichenfolge bereitstellen müssen, wenn Sie mit der Datenbank über eine ASP.NET Webseite arbeiten. Die Ermittlung des Server- und Datenbanknamens bei Verwendung einer SQL Server 2005 Express Edition-Datenbank im ordner App_Data ist jedoch ein bisschen komplexer.

Im folgenden Abschnitt wird eine einfache Methode zum Angeben des Server- und Datenbanknamens für eine SQL Server 2005 Express Edition-Datenbank im ordner App_Data untersucht. Wenn Sie SQL Server 2005 Express Edition nicht verwenden, können Sie mit dem Abschnitt "Application Services installieren" fortfahren.

Ermitteln des Server- und Datenbanknamens für eine SQL Server 2005 Express Edition Datenbank imApp_DataOrdner

Um das tool aspnet_regsql.exe zu verwenden, müssen wir die Server- und Datenbanknamen kennen. Der Servername ist localhost\InstanceName. Höchstwahrscheinlich lautet der Instanzname SQLExpress. Wenn Sie SQL Server 2005 Express Edition jedoch manuell installiert haben (d. h., Sie haben sie beim Installieren von Visual Studio nicht automatisch installiert), ist es möglich, dass Sie einen anderen Instanznamen ausgewählt haben.

Der Datenbankname ist etwas schwieriger zu bestimmen. Datenbanken im Ordner App_Data verfügen in der Regel über einen Datenbanknamen, der einen global eindeutigen Bezeichner zusammen mit dem Pfad zur Datenbankdatei enthält. Wir müssen diesen Datenbanknamen ermitteln, um das Schema der Anwendungsdienste über aspnet_regsql.exe hinzufügen zu können.

Die einfachste Möglichkeit, den Datenbanknamen zu ermitteln, besteht darin, ihn über SQL Server Management Studio zu untersuchen. SQL Server Management Studio bietet eine grafische Schnittstelle zum Verwalten von SQL Server 2005-Datenbanken, wird jedoch nicht mit der Express Edition von SQL Server 2005 ausgeliefert. Die gute Nachricht ist, dass Sie die kostenlose Express Edition von SQL Server Management Studio herunterladen können.

Anmerkung

Wenn Sie auch eine Nicht-Express Edition-Version von SQL Server 2005 auf Dem Desktop installiert haben, wird wahrscheinlich die Vollversion von Management Studio installiert. Sie können die Vollversion verwenden, um den Datenbanknamen zu ermitteln. Führen Sie dazu die gleichen Schritte aus, wie unten für die Express Edition beschrieben.

Schließen Sie zunächst Visual Studio, um sicherzustellen, dass alle Sperren, die von Visual Studio auf die Datenbankdatei auferlegt werden, geschlossen sind. Starten Sie als Nächstes SQL Server Management Studio, und stellen Sie eine Verbindung mit der localhost\InstanceName-Datenbank für SQL Server 2005 Express Edition her. Wie bereits erwähnt, ist der Name der Instanz wahrscheinlich SQLExpress. Wählen Sie für die Authentifizierungsoption die Windows-Authentifizierung aus.

Verbinden Sie sich mit der SQL Server 2005 Express Edition Instanz

Abbildung 3: Herstellen einer Verbindung mit der SQL Server 2005 Express Edition-Instanz (Klicken, um das Bild in voller Größe anzuzeigen)

Nach dem Herstellen einer Verbindung mit der SQL Server 2005 Express Edition-Instanz zeigt Management Studio Ordner für die Datenbanken, die Sicherheitseinstellungen, die Serverobjekte usw. an. Wenn Sie die Registerkarte Datenbanken erweitern, werden Sie sehen, dass die SecurityTutorials.mdf-Datenbank nicht in der Instanz registriert ist – wir müssen die Datenbank zunächst zuordnen.

Klicken Sie mit der rechten Maustaste auf den Ordner "Datenbanken", und wählen Sie im Kontextmenü "Anfügen" aus. Dadurch wird das Dialogfeld "Datenbanken anfügen" angezeigt. Klicken Sie auf die Schaltfläche Hinzufügen, suchen Sie nach der Datenbank SecurityTutorials.mdf und klicken Sie auf OK. Abbildung 4 zeigt das Dialogfeld "Datenbanken anfügen", nachdem die SecurityTutorials.mdf Datenbank ausgewählt wurde. Abbildung 5 zeigt den Objekt-Explorer von Management Studio, nachdem die Datenbank erfolgreich angefügt wurde.

Anhängen der Datenbank SecurityTutorials.mdf

Abbildung 4: Zuordnen der SecurityTutorials.mdf Datenbank (Klicken Sie, um das Bild in voller Größe zu sehen)

Die SecurityTutorials.mdf Datenbank erscheint im Ordner „Datenbanken“

Abbildung 5: Die SecurityTutorials.mdfDatenbank erscheint im Ordner Databases (Klicken Sie, um das Bild in voller Größe zu sehen)

Wie in Abbildung 5 dargestellt, weist die SecurityTutorials.mdf Datenbank einen ziemlich abstrusen Namen auf. Ändern wir es in einen einprägsameren (und einfacher zu eingebenden) Namen. Klicken Sie mit der rechten Maustaste auf die Datenbank, wählen Sie "Umbenennen" aus dem Kontextmenü aus, und benennen Sie sie SecurityTutorialsDatabaseum. Dadurch wird der Dateiname nicht geändert, nur der Name, den die Datenbank verwendet, um sich selbst in SQL Server zu identifizieren.

Die Datenbank in

Abbildung 6: Umbenennen der Datenbank in SecurityTutorialsDatabase(Klicken Sie, um das Bild in voller Größe zu sehen)

An diesem Punkt kennen wir die Server- und Datenbanknamen für die SecurityTutorials.mdf Datenbankdatei: localhost\InstanceName bzw. SecurityTutorialsDatabase. Wir sind jetzt bereit, die Anwendungsdienste über das aspnet_regsql.exe Tool zu installieren.

Installation der Anwendungsdienste

Um das aspnet_regsql.exe-Tool zu starten, wechseln Sie zum Startmenü, und wählen Sie "Ausführen" aus. Geben Sie %WINDIR%\Microsoft.Net\Framework\v2.0.50727\aspnet_regsql.exe in das Textfeld ein, und klicken Sie auf "OK". Alternativ können Sie den Windows-Explorer verwenden, um einen Drilldown zum entsprechenden Ordner zu erstellen und auf die aspnet_regsql.exe Datei zu doppelklicken. Bei beiden Ansätzen werden dieselben Ergebnisse erzielt.

Wenn Sie das Tool aspnet_regsql.exe ohne Befehlszeilenargumente ausführen, wird die grafische Benutzeroberfläche des ASP.NET SQL Server-Setup-Assistenten gestartet. Der Assistent erleichtert das Hinzufügen oder Entfernen von ASP.NET-Anwendungsdiensten für eine bestimmte Datenbank. Die erste Seite des Assistenten, die Sie in Abbildung 7 sehen, beschreibt den Zweck des Tools.

Verwenden Sie den Assistenten zur Einrichtung von ASP.NET SQL Server, um das Schema für die Mitgliedschaft hinzuzufügen

Abbildung 7: Verwenden Sie den Assistenten für die Einrichtung von ASP.NET SQL Server, um das Schema für die Mitgliedschaft hinzuzufügen (Klicken Sie, um das Bild in voller Größe anzuzeigen)

Im zweiten Schritt des Assistenten werden wir gefragt, ob wir die Anwendungsdienste hinzufügen oder entfernen möchten. Da wir die Tabellen, Ansichten und gespeicherten Prozeduren hinzufügen möchten, die für die SqlMembershipProvidererforderlich sind, wählen Sie die Option "SQL Server für Anwendungsdienste konfigurieren" aus. Wenn Sie dieses Schema später aus Ihrer Datenbank entfernen möchten, führen Sie diesen Assistenten erneut aus, und wählen Sie stattdessen die Option "Anwendungsdiensteinformationen aus einer vorhandenen Datenbank entfernen" aus.

Wählen Sie die Option

Abbildung 8: Wählen Sie die Option "SQL Server für Anwendungsdienste konfigurieren" aus (Klicken, um das Bild in voller Größe anzuzeigen)

Der dritte Schritt fordert die Datenbankinformationen auf: den Servernamen, die Authentifizierungsinformationen und den Datenbanknamen. Wenn Sie diesem Tutorial gefolgt sind und die SecurityTutorials.mdf Datenbank zu App_Datahinzugefügt, sie an localhost\InstanceNameangefügt und in SecurityTutorialsDatabaseumbenannt haben, verwenden Sie die folgenden Werte:

  • Server: localhost\InstanceName
  • Windows-Authentifizierung
  • Datenbank: SecurityTutorialsDatabase

Datenbankinformationen eingeben

Abbildung 9: Geben Sie die Datenbankinformationen ein (Klicken, um das Bild in voller Größe anzuzeigen)

Klicken Sie nach der Eingabe der Datenbankinformationen auf "Weiter". Der letzte Schritt fasst die Schritte zusammen, die ausgeführt werden sollen. Klicken Sie auf Weiter, um die Anwendungsdienste zu installieren und dann auf Abschließen, um den Assistenten abzuschließen.

Anmerkung

Wenn Sie Management Studio verwendet haben, um die Datenbank zuzuordnen und die Datenbankdatei umzubenennen, stellen Sie sicher, dass Sie die Datenbank lösen und Management Studio schließen, bevor Sie Visual Studio erneut öffnen. Um die SecurityTutorialsDatabase Datenbank zu trennen, klicken Sie mit der rechten Maustaste auf den Namen der Datenbank und wählen Sie im Menü Aufgaben die Option Trennen.

Kehren Sie nach Beendigung des Assistenten zu Visual Studio zurück und navigieren Sie zum Database Explorer. Erweitern Sie den Ordner "Tabellen". Es sollte eine Reihe von Tabellen angezeigt werden, deren Namen mit dem Präfix aspnet_beginnen. Ebenso finden Sie eine Vielzahl von Ansichten und gespeicherten Prozeduren unter den Ordnern "Ansichten" und "Gespeicherte Prozeduren". Diese Datenbankobjekte bilden das Anwendungsdienstschema. In Schritt 3 werden die mitgliedschafts- und rollenspezifischen Datenbankobjekte untersucht.

Eine Vielzahl von Tabellen, Ansichten und gespeicherten Prozeduren wurden der Datenbank hinzugefügt

Abbildung 10: Eine Vielzahl von Tabellen, Ansichten und gespeicherten Prozeduren wurden der Datenbank hinzugefügt (Klicken, um das Bild in voller Größe anzuzeigen)

Anmerkung

Die grafische Benutzeroberfläche des aspnet_regsql.exe Tools installiert das gesamte Anwendungsdienstschema. Wenn Sie jedoch aspnet_regsql.exe über die Befehlszeile ausführen, können Sie angeben, welche bestimmten Anwendungsdienstekomponenten installiert werden sollen (oder entfernen). Wenn Sie daher nur die Tabellen, Ansichten und gespeicherten Prozeduren hinzufügen möchten, die für die SqlMembershipProvider und SqlRoleProvider Anbieter erforderlich sind, führen Sie aspnet_regsql.exe über die Befehlszeile aus. Alternativ können Sie die entsprechende Teilmenge von T-SQL-Erstellungsskripts manuell ausführen, die von aspnet_regsql.exeverwendet werden. Diese Skripts befinden sich im Ordner WINDIR%\Microsoft.Net\Framework\v2.0.50727\ mit Namen wie InstallCommon.sql,InstallMembership.sql,InstallRoles.sql, InstallProfile.sql,InstallSqlState.sqlusw.

Jetzt haben wir die Datenbankobjekte erstellt, die für die SqlMembershipProvider benötigt werden. Allerdings müssen wir dem Framework für die Mitgliedschaft noch mitteilen, dass es die SqlMembershipProvider (und nicht etwa die ActiveDirectoryMembershipProvider) und die SqlMembershipProvider die SecurityTutorials Datenbank verwenden soll. In Schritt 4 wird erläutert, wie Sie angeben, welcher Anbieter verwendet werden soll und wie die Einstellungen des ausgewählten Anbieters angepasst werden. Sehen wir uns zunächst die soeben erstellten Datenbankobjekte genauer an.

Schritt 3: Ein Blick auf die Kerntabellen des Schemas

Wenn Sie mit den Frameworks Mitgliedschaft und Rollen in einer ASP.NET-Anwendung arbeiten, werden die Details der Implementierung durch den Provider gekapselt. In zukünftigen Tutorien werden wir mit den Klassen Membership und Roles des .NET Frameworks mit diesen Frameworks interagieren. Bei der Verwendung dieser High-Level-APIs müssen wir uns nicht mit den Low-Level-Details befassen, z.B. welche Abfragen ausgeführt oder welche Tabellen durch die SqlMembershipProvider und SqlRoleProvider geändert werden.

Da dies der Fall ist, könnten wir die Frameworks "Mitgliedschaft" und "Rollen" sicher verwenden, ohne das in Schritt 2 erstellte Datenbankschema untersucht zu haben. Beim Erstellen der Tabellen zum Speichern von Anwendungsdaten müssen wir möglicherweise Entitäten erstellen, die sich auf Benutzer oder Rollen beziehen. Es ist hilfreich, mit den SqlMembershipProvider- und SqlRoleProvider-Schemata vertraut zu sein, wenn Sie Fremdschlüssel-Beschränkungen zwischen den Tabellen der Anwendungsdaten und den in Schritt 2 erstellten Tabellen festlegen. Darüber hinaus kann es in seltenen Fällen erforderlich sein, eine Schnittstelle zu den Benutzer- und Rollenspeichern direkt auf der Datenbankebene zu erstellen (anstatt über die Membership- oder Roles-Klassen).

Die Partitionierung des Benutzerspeichers auf Anwendungen

Die Frameworks „Mitgliedschaft“ und „Rollen“ sind so konzipiert, dass ein gemeinsamer Speicher für Benutzer und Rollen von vielen verschiedenen Anwendungen gemeinsam genutzt werden kann. Eine ASP.NET Anwendung, die die Mitgliedschafts- oder Rollenframeworks verwendet, muss angeben, welche Anwendungspartition verwendet werden soll. Kurz gesagt können mehrere Webanwendungen dieselben Benutzer- und Rollenspeicher verwenden. Abbildung 11 zeigt Benutzer- und Rollenspeicher, die in drei Anwendungen unterteilt sind: HRSite, CustomerSite und SalesSite. Diese drei Webanwendungen verfügen jeweils über eigene eindeutige Benutzer und Rollen, doch speichern sie alle ihre Benutzerkonto- und Rolleninformationen physisch in denselben Datenbanktabellen.

Benutzerkonten können auf mehrere Anwendungen aufgeteilt werden.

Abbildung 11: Benutzerkonten können auf mehrere Anwendungen verteilt werden (Klicken Sie, um das Bild in voller Größe anzuzeigen)

Die aspnet_Applications Tabelle definiert diese Partitionen. Jede Anwendung, die die Datenbank zum Speichern von Benutzerkontoinformationen verwendet, wird durch eine Zeile in dieser Tabelle dargestellt. Die aspnet_Applications Tabelle enthält vier Spalten: ApplicationId, ApplicationName, LoweredApplicationNameund Description. ApplicationId ist vom Typ uniqueidentifier und ist der Primärschlüssel der Tabelle; ApplicationName bietet einen eindeutigen benutzerfreundlichen Namen für jede Anwendung.

Die anderen mit Mitgliedschaft und Rollen zusammenhängenden Tabellen verweisen zurück zum Feld ApplicationId in aspnet_Applications. Die Tabelle aspnet_Users, die einen Datensatz für jedes Benutzerkonto enthält, verfügt beispielsweise über ein ApplicationId-Fremdschlüsselfeld; dasselbe gilt für die Tabelle aspnet_Roles. Das Feld ApplicationId in diesen Tabellen gibt die Anwendungspartition an, zu der das Benutzerkonto oder die Rolle gehört.

Speichern von Benutzerkontoinformationen

Benutzerkontoinformationen sind in zwei Tabellen enthalten: aspnet_Users und aspnet_Membership. Die tabelle aspnet_Users enthält Felder, die die wesentlichen Benutzerkontoinformationen enthalten. Die drei relevantesten Spalten sind:

  • UserId
  • UserName
  • ApplicationId

UserId ist der primäre Schlüssel (und vom Typ uniqueidentifier). UserName ist vom Typ nvarchar(256) und macht zusammen mit dem Kennwort die Anmeldeinformationen des Benutzers aus. (Das Kennwort eines Benutzers wird in der aspnet_Membership Tabelle gespeichert.) ApplicationId verknüpft das Benutzerkonto mit einer bestimmten Anwendung in aspnet_Applications. Es gibt eine Composite UNIQUE-Beschränkung für die Spalten UserName und ApplicationId. Dadurch wird sichergestellt, dass jeder UserName in einer bestimmten Anwendung eindeutig ist, aber es ermöglicht, dasselbe UserName in verschiedenen Anwendungen zu verwenden.

Die aspnet_Membership Tabelle enthält zusätzliche Benutzerkontoinformationen, z. B. das Kennwort des Benutzers, die E-Mail-Adresse, das datum und die Uhrzeit der letzten Anmeldung usw. Es gibt eine 1:1-Korrespondenz zwischen den Datensätzen in den aspnet_Users- und aspnet_Membership-Tabellen. Diese Beziehung wird durch das feld UserId in aspnet_Membershipsichergestellt, das als Primärschlüssel der Tabelle dient. Wie die aspnet_Users Tabelle enthält aspnet_Membership ein ApplicationId Feld, das diese Informationen mit einer bestimmten Anwendungspartition verknüpft.

Sichern von Passwörtern

Kennwortinformationen werden in der aspnet_Membership Tabelle gespeichert. Mit dem SqlMembershipProvider können Kennwörter mithilfe einer der folgenden drei Techniken in der Datenbank gespeichert werden:

  • Clear – das Kennwort wird in der Datenbank im Klartext gespeichert. Ich rate dringend davon ab, diese Option zu verwenden. Wenn die Datenbank kompromittiert wird – sei es durch einen Hacker, der eine Hintertür findet, oder einen verärgerten Mitarbeiter, der Datenbankzugriff hat – stehen die Anmeldeinformationen jedes einzelnen Benutzers für den Zugriff bereit.
  • Hashed – Kennwörter werden mit einem Einweg-Hash-Algorithmus und einem zufällig generierten Salt-Wert gehasht. Dieser Hashwert (zusammen mit dem Salz) wird in der Datenbank gespeichert.
  • Verschlüsselt – eine verschlüsselte Version des Passworts wird in der Datenbank gespeichert.

Die verwendete Kennwortspeichertechnik hängt von den in Web.configangegebenen SqlMembershipProvider Einstellungen ab. Die Anpassung der SqlMembershipProvider-Einstellungen werden wir in Schritt 4 betrachten. Das Standardverhalten besteht darin, den Hash des Kennworts zu speichern.

Die Spalten, die für das Speichern des Kennworts verantwortlich sind, sind Password, PasswordFormatund PasswordSalt. PasswordFormat ist ein Feld vom Typ int, dessen Wert die Zum Speichern des Kennworts verwendete Technik angibt: 0 für Clear; 1 für Hashed; 2 für verschlüsselt. PasswordSalt wird unabhängig von der verwendeten Kennwortspeichertechnik eine zufällig generierte Zeichenfolge zugewiesen; der Wert von PasswordSalt wird nur beim Berechnen des Hashs des Kennworts verwendet. Schließlich enthält die Spalte Password die tatsächlichen Kennwortdaten, sei es das Nur-Text-Kennwort, den Hash des Kennworts oder das verschlüsselte Kennwort.

Tabelle 1 zeigt, wie diese drei Spalten für die verschiedenen Storage-Techniken beim Speichern des Kennworts MySecret! aussehen könnten. .

Speicherungstechnik<_o3a_p /> Password<_o3a_p /> PasswordFormat<_o3a_p /> PasswordSalt<_o3a_p />
Clear MySecret! 0 tTnkPlesqissc2y2SMEygA==
Hash 2oXm6sZHWbTHFgjgkGQsc2Ec9ZM= 1 wFgjUfhdUFOCKQiI61vtiQ==
Verschlüsselt 62RZgDvhxykkqsMchZ0Yly7HS6onhpaoCYaRxV8g0F4CW56OXUU3e7Inza9j9BKp 2 LSRzhGS/aa/oqAXGLHJNBw==

Tabelle 1: Beispielwerte für die passwortbezogenen Felder beim Speichern des Kennworts MySecret!

Anmerkung

Der spezielle Verschlüsselungs- oder Hashing-Algorithmus, der von SqlMembershipProvider verwendet wird, wird durch die Einstellungen im <machineKey> Element festgelegt.

Speichern von Rollen und Rollenzuordnungen

Mit dem Rollenframework können Entwickler eine Reihe von Rollen definieren und angeben, welche Benutzer zu welchen Rollen gehören. Diese Informationen werden in der Datenbank über zwei Tabellen erfasst: aspnet_Roles und aspnet_UsersInRoles. Jeder Datensatz in der aspnet_Roles Tabelle stellt eine Rolle für eine bestimmte Anwendung dar. Ähnlich wie die aspnet_Users Tabelle weist die aspnet_Roles Tabelle drei Spalten auf, die für unsere Diskussion relevant sind:

  • RoleId
  • RoleName
  • ApplicationId

RoleId ist der primäre Schlüssel (und vom Typ uniqueidentifier). RoleName ist vom Typ nvarchar(256). Und ApplicationId verknüpft das Benutzerkonto mit einer bestimmten Anwendung in aspnet_Applications. Es gibt eine Composite UNIQUE-Beschränkung für die Spalten RoleName und ApplicationId, die sicherstellt, dass in einer bestimmten Anwendung jeder Rollenname eindeutig ist.

Die aspnet_UsersInRoles Tabelle dient als Zuordnung zwischen Benutzern und Rollen. Es gibt nur zwei Spalten – UserId und RoleId – und zusammen bilden sie einen zusammengesetzten Primärschlüssel.

Schritt 4: Angeben des Anbieters und Anpassen seiner Einstellungen

Alle Frameworks, die das Anbietermodell unterstützen , z. B. die Frameworks "Mitgliedschaft" und "Rollen", verfügen über keine Implementierungsdetails selbst und delegieren stattdessen diese Verantwortung an eine Anbieterklasse. Im Falle des Mitgliedschaftsframeworks definiert die Membership-Klasse die API für die Verwaltung von Benutzerkonten, interagiert jedoch nicht direkt mit einem Benutzerspeicher. Stattdessen übergeben die Methoden der Klasse Membership die Anfrage an den konfigurierten Anbieter – wir verwenden SqlMembershipProvider. Wenn wir eine der Methoden in der Klasse Membership aufrufen, woher weiß das Framework für die Mitgliedschaft, dass es den Aufruf an SqlMembershipProvider delegieren soll?

Die Klasse Membership hat eine ProvidersEigenschaft, die einen Verweis auf alle registrierten Anbieterklassen enthält, die dem Framework für die Mitgliedschaft zur Verfügung stehen. Jeder registrierte Anbieter hat einen zugeordneten Namen und Typ. Der Name bietet eine benutzerfreundliche Möglichkeit, auf einen bestimmten Anbieter in der Providers-Auflistung zu verweisen, während der Typ die Anbieterklasse identifiziert. Darüber hinaus kann jeder registrierte Anbieter Konfigurationseinstellungen enthalten. Zu den Konfigurationseinstellungen für das Framework Mitgliedschaft gehören passwordFormat und requiresUniqueEmail, neben vielen anderen. In Tabelle 2 finden Sie eine vollständige Liste der Konfigurationseinstellungen, die von der SqlMembershipProvider.

Der Inhalt der Providers-Eigenschaft wird durch die Konfigurationseinstellungen der Webanwendung bestimmt. Standardmäßig verfügen alle Webanwendungen über einen Anbieter namens AspNetSqlMembershipProvider vom Typ SqlMembershipProvider. Dieser Standardanbieter für die Mitgliedschaft ist in machine.config registriert (Speicherort %WINDIR%\Microsoft.Net\Framework\v2.0.50727\CONFIG):

Warnung

Das Beispiel, nach dem Sie suchen, wurde offenbar verschoben. Seien Sie sicher, dass wir daran arbeiten, dies zu lösen.

Wie das obige Markup zeigt, definiert das <membership> Element die Konfigurationseinstellungen für das Framework Mitgliedschaft, während das <providers> untergeordnete Element die registrierten Anbieter angibt. Anbieter können mithilfe der <add> oder <remove> Elemente hinzugefügt oder entfernt werden; verwenden Sie das <clear>-Element, um alle aktuell registrierten Anbieter zu entfernen. Wie das oben gezeigte Markup zeigt, fügt machine.config einen Anbieter mit dem Namen AspNetSqlMembershipProvider vom Typ SqlMembershipProviderhinzu.

Zusätzlich zu den Attributen name und type enthält das <add>-Element Attribute, die die Werte für verschiedene Konfigurationseinstellungen definieren. In Tabelle 2 sind die verfügbaren SqlMembershipProvider-spezifischen Konfigurationseinstellungen sowie eine Beschreibung von jeder aufgeführt.

Anmerkung

Alle in Tabelle 2 aufgeführten Standardwerte beziehen sich auf die in der SqlMembershipProvider Klasse definierten Standardwerte. Beachten Sie, dass nicht alle Konfigurationseinstellungen in AspNetSqlMembershipProvider den Standardwerten der SqlMembershipProvider Klasse entsprechen. Wenn zum Beispiel kein Anbieter für die Mitgliedschaft festgelegt wird, ist die Einstellung requiresUniqueEmail standardmäßig auf TRUE gesetzt. Das Element AspNetSqlMembershipProvider setzt diesen Standardwert jedoch außer Kraft, indem es explizit einen Wert von false angibt.

Einstellung<_o3a_p /> Beschreibung<_o3a_p />
ApplicationName Denken Sie daran, dass das Mitgliedschaftsframework die Partitionierung eines einzelnen Benutzerspeichers über mehrere Anwendungen hinweg ermöglicht. Diese Einstellung gibt den Namen der Anwendungspartition an, die vom Mitgliedschaftsanbieter verwendet wird. Wenn dieser Wert nicht explizit angegeben ist, wird er zur Laufzeit auf den Wert des virtuellen Stammpfads der Anwendung festgelegt.
commandTimeout Gibt den Timeout-Wert für SQL-Befehle an (in Sekunden). Der Standardwert ist 30.
connectionStringName Der Name der Verbindungszeichenfolge im <connectionStrings> Element, die für die Verbindung mit der Datenbank des Benutzenden Stores verwendet wird. Dieser Wert ist erforderlich.
description Stellt eine benutzerfreundliche Beschreibung des registrierten Anbieters bereit.
enablePasswordRetrieval Gibt an, ob Benutzer ihr vergessenes Kennwort abrufen können. Der Standardwert ist false.
enablePasswordReset Gibt an, ob Benutzer ihr Kennwort zurücksetzen dürfen. Wird standardmäßig auf true festgelegt.
maxInvalidPasswordAttempts Die maximale Anzahl von erfolglosen Anmeldeversuchen, die für einen bestimmten Benutzer während der angegebenen passwordAttemptWindow auftreten können, bevor der Benutzer gesperrt wird. Der Standardwert ist 5.
minRequiredNonalphanumericCharacters Die Mindestanzahl nicht alphanumerischer Zeichen, die im Kennwort eines Benutzers angezeigt werden müssen. Dieser Wert muss zwischen 0 und 128 sein; Der Standardwert ist 1.
minRequiredPasswordLength Die mindeste Anzahl von Zeichen, die in einem Kennwort erforderlich sind. Dieser Wert muss zwischen 0 und 128 sein; Der Standardwert ist 7.
name Der Name des registrierten Anbieters. Dieser Wert ist erforderlich.
passwordAttemptWindow Die Anzahl der Minuten, in denen fehlgeschlagene Anmeldeversuche nachverfolgt werden. Wenn ein Benutzer ungültige Anmeldeinformationen maxInvalidPasswordAttempts Mal innerhalb der angegebenen Zeitspanne eingibt, wird er gesperrt. Der Standardwert ist 10.
PasswordFormat Das Kennwortspeicherformat: Clear, Hashedoder Encrypted. Der Standardwert ist Hashed.
passwordStrengthRegularExpression Wenn angegeben, wird dieser reguläre Ausdruck verwendet, um die Stärke des ausgewählten Kennworts des Benutzers beim Erstellen eines neuen Kontos oder beim Ändern seines Kennworts auszuwerten. Der Standardwert ist eine leere Zeichenfolge.
requiresQuestionAndAnswer Gibt an, ob ein Benutzer seine Sicherheitsfrage beim Abrufen oder Zurücksetzen seines Kennworts beantworten muss. Der Standardwert ist true.
requiresUniqueEmail Gibt an, ob alle Benutzerkonten in einer bestimmten Anwendungspartition über eine eindeutige E-Mail-Adresse verfügen müssen. Der Standardwert ist true.
type Gibt den Typ des Anbieters an. Dieser Wert ist erforderlich.

Tabelle 2: Mitgliedschaft und SqlMembershipProvider Konfigurationseinstellungen

Zusätzlich zu AspNetSqlMembershipProvider können weitere Anbieter von Mitgliedschaften für jede einzelne Anwendung registriert werden, indem Sie der Datei Web.config eine ähnliche Markierung hinzufügen.

Anmerkung

Das Rollen Framework funktioniert ähnlich: Es gibt einen standardmäßig registrierten Rollenanbieter in machine.config und die registrierten Anbieter können in Web.config anwendungsspezifisch angepasst werden. Wir werden das Rollenframework und sein Konfigurationsmarkup in einem zukünftigen Tutorial ausführlich untersuchen.

Anpassen derSqlMembershipProviderEinstellungen

Bei der Standardeinstellung SqlMembershipProvider (AspNetSqlMembershipProvider) ist das Attribut connectionStringName auf LocalSqlServer festgelegt. Wie der Anbieter AspNetSqlMembershipProvider ist auch die Verbindungszeichenfolge LocalSqlServer in machine.config definiert.

Warnung

Das Beispiel, nach dem Sie suchen, wurde offenbar verschoben. Seien Sie sicher, dass wir daran arbeiten, dies zu lösen.

Wie Sie sehen können, definiert diese Verbindungszeichenfolge eine SQL 2005 Express Edition-Datenbank unter |DataDirectory|aspnetdb.mdf'. Die Zeichenfolge |DataDirectory| wird zur Runtime so übersetzt, dass sie auf das Verzeichnis ~/App_Data/ verweist, so dass der Datenbankpfad |DataDirectory|aspnetdb.mdf" in ~/App_Data/aspnet.mdf übersetzt wird.

Wenn wir keine Mitgliedschaftsanbieterinformationen in der Web.config-Datei unserer Anwendung angegeben haben, verwendet die Anwendung den standardmäßigen registrierten Mitgliedschaftsanbieter AspNetSqlMembershipProvider. Wenn die ~/App_Data/aspnet.mdf-Datenbank nicht existiert, wird sie von der ASP.NET Runtime automatisch erstellt und das Anwendungsdienstschema hinzugefügt. Wir möchten jedoch nicht die aspnet.mdf-Datenbank verwenden; Stattdessen möchten wir die SecurityTutorials.mdf Datenbank verwenden, die wir in Schritt 2 erstellt haben. Diese Änderung kann auf eine von zwei Arten durchgeführt werden:

  • Legen Sie einen Wert für dieLocalSqlServerVerbindungszeichenfolge inWeb.config fest. Indem wir den LocalSqlServerWert für die Verbindungszeichenfolge in Web.config überschreiben, können wir den standardmäßig registrierten Anbieter von Mitgliedschaften (AspNetSqlMembershipProvider) verwenden und ihn korrekt mit der SecurityTutorials.mdfDatenbank arbeiten lassen. Dieser Ansatz ist in Ordnung, wenn Sie mit den von AspNetSqlMembershipProviderangegebenen Konfigurationseinstellungen zufrieden sind. Weitere Informationen zu dieser Technik finden Sie in Scott Guthrie's Blogeintrag, Configuring ASP.NET 2.0 Application Services to Use SQL Server 2000 or SQL Server 2005.
  • Fügen Sie einen neuen registrierten Anbieter vom TypSqlMembershipProviderhinzu, und konfigurieren Sie ihreconnectionStringNameEinstellung so, dass sie auf dieSecurityTutorials.mdf-Datenbank verweist. Dieser Ansatz ist in Szenarien hilfreich, in denen Sie zusätzlich zur Datenbankverbindungszeichenfolge andere Konfigurationseigenschaften anpassen möchten. In meinen eigenen Projekten verwende ich diesen Ansatz immer aufgrund seiner Flexibilität und Lesbarkeit.

Bevor wir einen neuen registrierten Anbieter hinzufügen können, der auf die SecurityTutorials.mdf-Datenbank verweist, müssen wir zuerst einen geeigneten Verbindungszeichenfolgenwert im Abschnitt <connectionStrings> in Web.confighinzufügen. Das folgende Markup fügt eine neue Verbindungszeichenfolge namens SecurityTutorialsConnectionString hinzu, die auf die SQL Server 2005 Express Edition SecurityTutorials.mdf-Datenbank im Ordner App_Data verweist.

Warnung

Anscheinend wurde die gesuchte Probe verschoben! Seien Sie sicher, dass wir daran arbeiten, dies zu lösen.

Anmerkung

Wenn Sie eine alternative Datenbankdatei verwenden, aktualisieren Sie die Verbindungszeichenfolge nach Bedarf. Weitere Informationen zur Bildung der richtigen Verbindungszeichenfolge finden Sie unter ConnectionStrings.com.

Als nächstes fügen Sie das folgende Markup zur Konfiguration der Mitgliedschaft in die Web.config Datei ein. Dieses Markup registriert einen neuen Anbieter mit dem Namen SecurityTutorialsSqlMembershipProvider.

Warnung

Das Beispiel, nach dem Sie suchen, wurde offenbar verschoben. Seien Sie sicher, dass wir daran arbeiten, dies zu lösen.

Zusätzlich zur Registrierung des SecurityTutorialsSqlMembershipProvider-Anbieters definiert das obige Markup den SecurityTutorialsSqlMembershipProvider-Anbieter als Standardanbieter (über das Attribut defaultProvider im <membership>-Element). Erinnern Sie sich daran, dass das Mitgliedschaftsframework über mehrere registrierte Anbieter verfügen kann. Da AspNetSqlMembershipProvider als erster Anbieter in machine.configregistriert ist, dient sie als Standardanbieter, sofern wir nichts anderes angeben.

Derzeit verfügt unsere Anwendung über zwei registrierte Anbieter: AspNetSqlMembershipProvider und SecurityTutorialsSqlMembershipProvider. Bevor wir jedoch den SecurityTutorialsSqlMembershipProvider-Anbieter registrierten, hätten wir alle zuvor registrierten Anbieter entfernen können, indem wir unmittelbar vor unserem <add>-Element ein <clear />-Element hinzufügen. Dies würde die AspNetSqlMembershipProvider aus der Liste der registrierten Anbieter löschen, was bedeutet, dass die SecurityTutorialsSqlMembershipProvider der einzige registrierte Mitgliedschaftsanbieter wäre. Wenn wir diesen Ansatz verwendet haben, müssen wir die SecurityTutorialsSqlMembershipProvider nicht als Standardanbieter markieren, da es sich um den einzigen registrierten Mitgliedschaftsanbieter handelt. Weitere Informationen zur Verwendung von <clear /> finden Sie unter Verwendung von <clear /> beim Hinzufügen von Providern.

Beachten Sie, dass die connectionStringName-Einstellung von SecurityTutorialsSqlMembershipProvider auf die soeben hinzugefügte SecurityTutorialsConnectionString Verbindungszeichenfolge verweist und dass die applicationName-Einstellung auf den Wert SecurityTutorials festgelegt wurde. Außerdem wurde die Einstellung requiresUniqueEmail auf true festgelegt. Alle anderen Konfigurationsoptionen sind mit den Werten in AspNetSqlMembershipProvideridentisch. Wenn Sie möchten, können Sie hier Konfigurationsänderungen vornehmen. Sie können beispielsweise die Kennwortstärke erhöhen, indem Sie zwei nicht alphanumerische Zeichen anstelle eines festlegen oder die Kennwortlänge auf acht Zeichen anstelle von sieben Zeichen erhöhen.

Anmerkung

Denken Sie daran, dass das Mitgliedschaftsframework die Partitionierung eines einzelnen Benutzerspeichers über mehrere Anwendungen hinweg ermöglicht. Die Einstellung applicationName des Anbieters für die Mitgliedschaft gibt an, welche Anwendung der Anbieter bei der Arbeit mit dem Benutzenden Store verwendet. Es ist wichtig, dass Sie explizit einen Wert für die applicationName-Konfigurationseinstellung festlegen, da, wenn die applicationName nicht explizit festgelegt ist, sie zur Laufzeit dem virtuellen Stammpfad der Webanwendung zugewiesen wird. Dies funktioniert einwandfrei, solange sich der virtuelle Stammpfad der Anwendung nicht ändert, aber wenn Sie die Anwendung in einen anderen Pfad verschieben, ändert sich auch die einstellung applicationName. Wenn dies der Fall ist, arbeitet der Anbieter der Mitgliedschaft mit einer anderen Partition der Anwendung als zuvor. Benutzerkonten, die vor der Verschiebung erstellt wurden, befinden sich in einer anderen Anwendungspartition, und diese Benutzer können sich nicht mehr bei der Website anmelden. Eine ausführlichere Diskussion zu diesem Thema finden Sie unter Bei der Konfiguration von ASP.NET 2.0 Mitgliedschaft und anderen Anbietern immer die Eigenschaft applicationName festlegen.

Zusammenfassung

An diesem Punkt verfügen wir über eine Datenbank mit den konfigurierten Anwendungsdiensten (SecurityTutorials.mdf) und haben unsere Webanwendung so konfiguriert, dass das Mitgliedschaftsframework den soeben registrierten SecurityTutorialsSqlMembershipProvider Anbieter verwendet. Dieser registrierte Anbieter ist vom Typ SqlMembershipProvider und hat seine connectionStringName auf die entsprechende Verbindungszeichenfolge (SecurityTutorialsConnectionString) festgelegt und seinen applicationName Wert explizit eingestellt.

Wir sind jetzt bereit, das Mitgliedschaftsframework aus unserer Anwendung zu verwenden. Im nächsten Lernprogramm untersuchen wir, wie neue Benutzerkonten erstellt werden. Danach untersuchen wir die Authentifizierung von Benutzern, das Durchführen der benutzerbasierten Autorisierung und das Speichern zusätzlicher benutzerbezogener Informationen in der Datenbank.

Glückliche Programmierung!

Weiterführende Literatur

Weitere Informationen zu den in diesem Lernprogramm erläuterten Themen finden Sie in den folgenden Ressourcen:

Videoschulung zu Themen, die in diesem Lernprogramm enthalten sind

Informationen zum Autor

Scott Mitchell, Autor mehrerer ASP/ASP.NET Bücher und Gründer von 4GuysFromRolla.com, arbeitet seit 1998 mit Microsoft Web Technologies zusammen. Scott arbeitet als unabhängiger Berater, Trainer und Schriftsteller. Sein neuestes Buch ist "Sams Teach Yourself ASP.NET 2.0 in 24 Stunden". Scott kann über mitchell@4guysfromrolla.com oder über seinen Blog bei http://ScottOnWriting.NETerreicht werden.

Besonderer Dank an

Diese Tutorial-Serie wurde von vielen hilfreichen Reviewern geprüft. Hauptgutachter für dieses Tutorial war Alicja Maziarz. Möchten Sie meine bevorstehenden MSDN-Artikel überprüfen? Wenn dies der Fall ist, schreiben Sie mir eine Nachricht bei mitchell@4GuysFromRolla.com.