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_Data
aus.) Öffnen Sie das Dialogfeld "Neues Element hinzufügen" und wählen Sie aus, eine neue SQL-Datenbank mit dem Namen SecurityTutorials.mdf
hinzuzufü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.
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.
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_Data
Ordner
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.
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.
Abbildung 4: Zuordnen der SecurityTutorials.mdf
Datenbank (Klicken Sie, um das Bild in voller Größe zu sehen)
Abbildung 5: Die SecurityTutorials.mdf
Datenbank 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 SecurityTutorialsDatabase
um. Dadurch wird der Dateiname nicht geändert, nur der Name, den die Datenbank verwendet, um sich selbst in SQL Server zu identifizieren.
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.
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 SqlMembershipProvider
erforderlich 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.
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_Data
hinzugefügt, sie an localhost\InstanceName
angefügt und in SecurityTutorialsDatabase
umbenannt haben, verwenden Sie die folgenden Werte:
- Server:
localhost\InstanceName
- Windows-Authentifizierung
- Datenbank:
SecurityTutorialsDatabase
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.
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.exe
verwendet 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.sql
usw.
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.
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
, LoweredApplicationName
und 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_Membership
sichergestellt, 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.config
angegebenen 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
, PasswordFormat
und 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 Providers
Eigenschaft, 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 SqlMembershipProvider
hinzu.
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 , Hashed oder 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 derSqlMembershipProvider
Einstellungen
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 die
LocalSqlServer
Verbindungszeichenfolge inWeb.config
fest. Indem wir denLocalSqlServer
Wert für die Verbindungszeichenfolge inWeb.config
überschreiben, können wir den standardmäßig registrierten Anbieter von Mitgliedschaften (AspNetSqlMembershipProvider
) verwenden und ihn korrekt mit derSecurityTutorials.mdf
Datenbank arbeiten lassen. Dieser Ansatz ist in Ordnung, wenn Sie mit den vonAspNetSqlMembershipProvider
angegebenen 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 Typ
SqlMembershipProvider
hinzu, und konfigurieren Sie ihreconnectionStringName
Einstellung 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.config
hinzufü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.config
registriert 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 AspNetSqlMembershipProvider
identisch. 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:
- Bei der Konfiguration von ASP.NET 2.0 Mitgliedschaft und anderen Providern immer die
applicationName
-Eigenschaft festlegen - Konfigurieren von ASP.NET 2.0-Anwendungsdiensten für die Verwendung von SQL Server 2000- oder SQL Server 2005-
- SQL Server Management Studio- herunterladen
- Untersuchung der Mitgliedschaft, Rollen und Profile von ASP.NET 2.0
- Das
<add>
Element für Provider für Mitgliedschaft - Das
<membership>
Element - Das
<providers>
Element für die Mitgliedschaft - Verwendung von
<clear />
beim Hinzufügen von Providern - Direktes Arbeiten mit dem
SqlMembershipProvider
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.