Übersetzung vorschlagen
 
Andere Vorschläge:

progress indicator
Keine anderen Vorschläge
Per Mausklick bewerten und Feedback geben
MSDN
MSDN Library
Web Entwicklung
ASP.NET
ASP.NET 4
ASP.NET-Sicherheit
Alle reduzieren/Alle erweitern Alle reduzieren
Inhalt anzeigen:  Englisch mit deutscher ÜbersetzungInhalt anzeigen: Englisch mit deutscher Übersetzung
.NET Framework 4 - ASP.NET
Implementing a Membership Provider

ASP.NET membership is designed to enable you to easily use a number of different membership providers for your ASP.NET applications. You can use the supplied membership providers that are included with the .NET Framework, or you can implement your own providers.

There are two primary reasons for creating a custom membership provider.

  • You need to store membership information in a data source that is not supported by the membership providers included with the .NET Framework, such as a FoxPro database, an Oracle database, or other data sources.

  • You need to manage membership information using a database schema that is different from the database schema used by the providers that ship with the .NET Framework. A common example of this would be membership data that already exists in a SQL Server database for a company or Web site.

To implement a membership provider, you create a class that inherits the MembershipProvider abstract class from the System.Web.Security namespace. The MembershipProvider abstract class inherits the ProviderBase abstract class from the System.Configuration.Provider namespace, so you must implement the required members of the ProviderBase class as well. The following tables list the required properties and methods that you must implement from the ProviderBase and MembershipProvider abstract classes and a description of each. To review an implementation of each member, see the code supplied for the Sample Membership Provider Implementation.

Member

Description

Initialize method

Takes, as input, the name of the provider and a NameValueCollection of configuration settings. Used to set property values for the provider instance including implementation-specific values and options specified in the configuration file (Machine.config or Web.config) supplied in the configuration.

Required MembershipProvider Members

Member

Description

EnablePasswordReset property

A Boolean value specified in the configuration file (Web.config).

The EnablePasswordReset property indicates whether users can use the ResetPassword method to overwrite their current password with a new, randomly generated password.

This property is read-only.

EnablePasswordRetrieval property

A Boolean value specified in the configuration file (Web.config).

The EnablePasswordRetrieval property indicates whether users can retrieve their password using the GetPassword method.

This property is read-only.

RequiresQuestionAndAnswer property

A Boolean value specified in the configuration file (Web.config).

The RequiresQuestionAndAnswer property indicates whether users must supply a password answer in order to retrieve their password using the GetPassword method, or reset their password using the ResetPassword method.

This property is read-only.

RequiresUniqueEmail property

A Boolean value specified in the configuration file (Web.config).

The RequiresUniqueEmail property indicates whether users must supply a unique e-mail address value when creating a user. If a user already exists in the data source for the current ApplicationName, the CreateUser method returns null and a status value of DuplicateEmail.

This property is read-only.

PasswordFormat property

A MembershipPasswordFormat value specified in the configuration file (Web.config).

The PasswordFormat property indicates the format that passwords are stored in. Passwords can be stored in Clear, Encrypted, and Hashed password formats. Clear passwords are stored in plain text, which improves the performance of password storage and retrieval but is less secure, as passwords are easily read if your data source is compromised. Encrypted passwords are encrypted when stored and can be decrypted for password comparison or password retrieval. This requires additional processing for password storage and retrieval but is more secure, as passwords are not easily determined if the data source is compromised. Hashed passwords are hashed using a one-way hash algorithm and a randomly generated salt value when stored in the database. When a password is validated, it is hashed with the salt value in the database for verification. Hashed passwords cannot be retrieved.

You can use the EncryptPassword and DecryptPassword virtual methods of the MembershipProvider class to encrypt and decrypt password values, or you can supply your own encryption code. If you use the EncryptPassword and DecryptPassword virtual methods of the MembershipProvider class, Encrypted passwords are encrypted using the key information supplied in the machineKey element the configuration file.

This property is read-only.

MaxInvalidPasswordAttempts property

An Integer value specified in the configuration file (Web.config).

The MaxInvalidPasswordAttempts works in conjunction with the PasswordAttemptWindow to guard against an unwanted source guessing the password or password answer of a membership user through repeated attempts. If the number of invalid passwords or password questions supplied for a membership user exceeds the MaxInvalidPasswordAttempts within the number of minutes identified by the PasswordAttemptWindow, then the membership user is locked out by setting the IsLockedOut property to true until the user is unlocked using the UnlockUser method. If a valid password or password answer is supplied before the MaxInvalidPasswordAttempts is reached, the counter that tracks the number of invalid attempts is reset to zero.

If the RequiresQuestionAndAnswer property is set to false, invalid password answer attempts are not tracked.

Invalid password and password answer attempts are tracked in the ValidateUser, ChangePassword, ChangePasswordQuestionAndAnswer, GetPassword, and ResetPassword methods.

This property is read-only.

PasswordAttemptWindow property

An Integer value specified in the configuration file (Web.config).

For a description, see the description of the MaxInvalidPasswordAttempts property.

This property is read-only.

ApplicationName property

The name of the application using the membership information specified in the configuration file (Web.config). The ApplicationName is stored in the data source with related user information and used when querying for that information. See the section on the ApplicationName later in this topic for more information.

This property is read/write and defaults to the ApplicationPath if not specified explicitly.

MembershipProvider..::.CreateUser method

Takes, as input, the name of a new user, a password, and an e-mail address and inserts a new user for the application into the data source. The CreateUser method returns a MembershipUser object that is populated with the information for the newly created user. The CreateUser method also defines an out parameter (in Visual Basic, you can use ByRef) that returns a MembershipCreateStatus value that indicates whether the user was successfully created, or a reason that the user was not successfully created.

The CreateUser method raises the ValidatingPassword event if a MembershipValidatePasswordEventHandler has been specified, and continues or cancels the create-user action based on the results of the event. You can use the OnValidatingPassword virtual method to execute the specified MembershipValidatePasswordEventHandler.

UpdateUser method

Takes, as input, a MembershipUser object populated with user information and updates the data source with the supplied values.

DeleteUser method

Takes, as input, the name of a user and deletes that user's information from the data source. The DeleteUser method returns true if the user was successfully deleted; otherwise, false. An additional Boolean parameter is included to indicate whether related information for the user, such as role or profile information is also deleted.

ValidateUser method

Takes, as input, a user name and a password and verifies that the values match those in the data source. The ValidateUser method returns true for a successful user name and password match; otherwise, false.

GetUser method

Takes, as input, a unique user identifier and a Boolean value indicating whether to update the LastActivityDate value for the user to show that the user is currently online. The GetUser method returns a MembershipUser object populated with current values from the data source for the specified user. If the user name is not found in the data source, the GetUser method returns null (Nothing in Visual Basic).

GetUser method

Takes, as input, a user name and a Boolean value indicating whether to update the LastActivityDate value for the user to show that the user is currently online. The GetUser method returns a MembershipUser object populated with current values from the data source for the specified user. If the user name is not found in the data source, the GetUser method returns null (Nothing in Visual Basic).

GetAllUsers method

Returns a MembershipUserCollection populated with MembershipUser objects for all of the users in the data source.

The results returned by GetAllUsers are constrained by the pageIndex and pageSize parameters. The pageSize parameter identifies the maximum number of MembershipUser objects to return in the MembershipUserCollection. The pageIndex parameter identifies which page of results to return, where 0 identifies the first page. The totalRecords parameter is an out parameter that is set to the total number of membership users. For example, if 13 users were in the database for the application, and the pageIndex value was 1 with a pageSize of 5, the MembershipUserCollection returned would contain the sixth through the tenth users returned. totalRecords would be set to 13.

GetNumberOfUsersOnline method

Returns an integer value that is the count of all the users in the data source where the LastActivityDate is greater than the current date and time minus the UserIsOnlineTimeWindow property. The UserIsOnlineTimeWindow property is an integer value specifying the number of minutes to use when determining whether a user is online.

ResetPassword method

Takes, as input, a user name and a password answer and generates a new, random password for the specified user. The ResetPassword method updates the user information in the data source with the new password value and returns the new password as a string. A convenient mechanism for generating a random password is the GeneratePassword method of the Membership class.

The ResetPassword method ensures that the EnablePasswordReset property is set to true before performing any action. If the EnablePasswordReset property is false, a NotSupportedException is thrown. The ResetPassword method also checks the value of the RequiresQuestionAndAnswer property. If the RequiresQuestionAndAnswer property is true, the ResetPassword method checks the value of the supplied answer parameter against the stored password answer in the data source. If they do not match, a MembershipPasswordException is thrown.

The ResetPassword method raises the ValidatingPassword event, if a MembershipValidatePasswordEventHandler has been specified, to validate the newly generated password and continues or cancels the reset-password action based on the results of the event. You can use the OnValidatingPassword virtual method to execute the specified MembershipValidatePasswordEventHandler.

GetPassword method

Takes, as input, a user name and a password answer and retrieves the password for that user from the data source and returns the password as a string.

GetPassword ensures that the EnablePasswordRetrieval property is set to true before performing any action. If the EnablePasswordRetrieval property is false, an ProviderException is thrown.

The GetPassword method also checks the value of the RequiresQuestionAndAnswer property. If the RequiresQuestionAndAnswer property is true, the GetPassword method checks the value of the supplied answer parameter against the stored password answer in the data source. If they do not match, a MembershipPasswordException is thrown.

GetUserNameByEmail method

Takes, as input, an e-mail address and returns the first user name from the data source where the e-mail address matches the supplied email parameter value.

If no user name is found with a matching e-mail address, an empty string is returned.

If multiple user names are found that match a particular e-mail address, only the first user name found is returned.

ChangePassword method

Takes, as input, a user name, a current password, and a new password, and updates the password in the data source if the supplied user name and current password are valid. The ChangePassword method returns true if the password was updated successfully; otherwise, false.

The ChangePassword method raises the ValidatingPassword event, if a MembershipValidatePasswordEventHandler has been specified, and continues or cancels the change-password action based on the results of the event. You can use the OnValidatingPassword virtual method to execute the specified MembershipValidatePasswordEventHandler.

ChangePasswordQuestionAndAnswer method

Takes, as input, a user name, a password, a password question, and a password answer, and updates the password question and answer in the data source if the supplied user name and password are valid. The ChangePasswordQuestionAndAnswer method returns true if the password question and answer are updated successfully; otherwise, false.

If the supplied user name and password are not valid, false is returned.

FindUsersByName method

Returns a list of membership users where the user name contains a match of the supplied usernameToMatch for the configured ApplicationName. For example, if the usernameToMatch parameter is set to "user," then the users "user1," "user2," "user3," and so on are returned. Wildcard support is included based on the data source. Users are returned in alphabetical order by user name.

The results returned by FindUsersByName are constrained by the pageIndex and pageSize parameters. The pageSize parameter identifies the number of MembershipUser objects to return in the MembershipUserCollection. The pageIndex parameter identifies which page of results to return, where 1 identifies the first page. The totalRecords parameter is an out parameter that is set to the total number of membership users that matched the usernameToMatch value. For example, if 13 users were found where usernameToMatch matched part of or the entire user name, and the pageIndex value was 2 with a pageSize of 5, then the MembershipUserCollection would contain the sixth through the tenth users returned. totalRecords would be set to 13.

FindUsersByEmail method

Returns a list of membership users where the user name contains a match of the supplied emailToMatch for the configured ApplicationName. For example, if the emailToMatch parameter is set to "address@example.com," then users with the e-mail addresses "address1@example.com," "address2@example.com," and so on are returned. Wildcard support is included based on the data source. Users are returned in alphabetical order by user name.

The results returned by FindUsersByEmail are constrained by the pageIndex and pageSize parameters. The pageSize parameter identifies the number of MembershipUser objects to return in the MembershipUserCollection collection. The pageIndex parameter identifies which page of results to return, where 1 identifies the first page. The totalRecords parameter is an out parameter that is set to the total number of membership users that matched the emailToMatch value. For example, if 13 users were found where emailToMatch matched part of or the entire user name, and the pageIndex value was 2 with a pageSize of 5, then the MembershipUserCollection would contain the sixth through the tenth users returned. totalRecords would be set to 13.

UnlockUser method

Takes, as input, a user name, and updates the field in the data source that stores the IsLockedOut property to false. The UnlockUser method returns true if the record for the membership user is updated successfully; otherwise false.

Membership providers store user information uniquely for each application. This enables multiple ASP.NET applications to use the same data source without running into a conflict if duplicate user names are created. Alternatively, multiple ASP.NET applications can use the same user data source by specifying the same ApplicationName.

Because membership providers store user information uniquely for each application, you will need to ensure that your data schema includes the application name and that queries and updates also include the application name. For example, the following command is used to retrieve a user name from a database, based on the e-mail address, and ensures that the ApplicationName is included in the query.

SELECT Username FROM MyUserTable 
  WHERE Email = 'someone@example.com' AND ApplicationName = 'MyApplication'

You may need to extend the membership provider interfaces with additional functionality not provided by the ProviderBase and MembershipProvider abstract classes. Any public members that you add to your membership provider will be accessible using the Provider or Providers property of the Membership class.

An example of this could be a LockUser method that sets the IsLockedOut property to true. The following example shows how to cast the Provider property, which exposes the default membership provider for an application, as a custom-provider type in order to call the custom LockUser method.

Visual Basic
Dim p As MyCustomProvider = CType(Membership.Provider, MyCustomProvider)
p.LockUser(username)
C#
MyCustomProvider p = (MyCustomProvider)Membership.Provider;
p.LockUser(username);

For each membership provider specified in the configuration for an application, ASP.NET instantiates a single membership provider instance that is used for all of the requests served by an HttpApplication object. As a result, you can have multiple requests executing concurrently. ASP.NET does not ensure the thread safety of calls to your provider. You will need to write your provider code to be thread safe. For example, creating a connection to a database or opening a file for editing should be done within the member that is called, such as MembershipProvider..::.CreateUser, rather than opening a file or database connection when the Initialize method is called.

.NET Framework 4 - ASP.NET
Implementieren eines Mitgliedschaftsanbieters

Die ASP.NET-Mitgliedschaft wurde so konzipiert, dass Sie auf einfache Weise verschiedene Mitgliedschaftsanbieter für Ihre ASP.NET-Anwendungen verwenden können. Sie können die vorhandenen Mitgliedschaftsanbieter von .NET Framework verwenden oder eigene Anbieter implementieren.

Es gibt zwei Hauptgründe dafür, einen benutzerdefinierten Mitgliedschaftsanbieter zu erstellen.

  • Sie müssen Mitgliedschaftsinformationen in einer Datenquelle speichern, die nicht von den vorhandenen Mitgliedschaftsanbietern von .NET Framework unterstützt wird, z. B.einer FoxPro-Datenbank, einer Oracle-Datenbank oder einer anderen Datenquelle.

  • Sie müssen Mitgliedschaftsinformationen mit einem Datenbankschema verwalten, das vom Datenbankschema der Anbieter abweicht, die mit .NET Framework geliefert werden. Ein typisches Beispiel dafür sind Mitgliedschaftsdaten, die bereits in der SQL Server-Datenbank für ein Unternehmen oder eine Website vorliegen.

Zum Implementieren eines Mitgliedschaftsanbieters erstellen Sie eine Klasse, die von der abstrakten Klasse MembershipProvider aus dem System.Web.Security-Namespace erbt. Die abstrakte Klasse MembershipProvider erbt von der abstrakten Klasse ProviderBase aus dem System.Configuration.Provider-Namespace. Folglich müssen Sie auch die erforderlichen Member der ProviderBase-Klasse implementieren. In den folgenden Tabellen werden die erforderlichen Eigenschaften und Methoden aufgeführt, die Sie aus der abstrakten Klasse ProviderBase und aus der abstrakten Klasse MembershipProvider implementieren müssen. Außerdem finden Sie eine Beschreibung der beiden abstrakten Klassen. Eine Implementierung der einzelnen Member finden Sie im Code zu Beispiel für eine Mitgliedschaftsanbieterimplementierung.

Member

Beschreibung

Initialize-Methode

Als Eingabe wird der Name des Anbieters und eine NameValueCollection der Konfigurationseinstellungen verwendet. Wird verwendet, um Eigenschaftswerte für die Anbieterinstanz festzulegen. Dazu gehören implementierungsspezifische Werte und Optionen, die in der Konfigurationsdatei (Machine.config oder Web.config) angegeben sind. Die Konfigurationsdatei ist Teil der Konfiguration.

Erforderliche MembershipProvider-Member

Member

Beschreibung

EnablePasswordReset-Eigenschaft

Ein in der Konfigurationsdatei ("Web.config") angegebener Boolean-Wert.

Die EnablePasswordReset-Eigenschaft gibt an, ob Benutzer die ResetPassword-Methode verwenden können, um ihr aktuelles Kennwort mit einem neuen, zufällig generierten Kennwort zu überschreiben.

Diese Eigenschaft ist schreibgeschützt.

EnablePasswordRetrieval-Eigenschaft

Ein in der Konfigurationsdatei (Web.config) angegebener Boolean-Wert.

Die EnablePasswordRetrieval-Eigenschaft zeigt an, ob Benutzer ihr Kennwort mit der GetPassword-Methode abrufen können.

Diese Eigenschaft ist schreibgeschützt.

RequiresQuestionAndAnswer-Eigenschaft

Ein in der Konfigurationsdatei (Web.config) angegebener Boolean-Wert.

Die RequiresQuestionAndAnswer-Eigenschaft zeigt an, ob Benutzer eine Kennwortantwort angeben müssen, um ihr Kennwort mit der GetPassword-Methode abzurufen oder mit der ResetPassword-Methode zurückzusetzen.

Diese Eigenschaft ist schreibgeschützt.

RequiresUniqueEmail-Eigenschaft

Ein in der Konfigurationsdatei (Web.config) angegebener Boolean-Wert.

Die RequiresUniqueEmail-Eigenschaft zeigt an, ob Benutzer bei der Erstellung eines neuen Benutzerkontos eine eindeutige E-Mail-Adresse angeben müssen. Wenn in der Datenquelle bereits ein Benutzer für den aktuellen ApplicationName vorhanden ist, gibt die CreateUser-Methode null und den Statuswert DuplicateEmail zurück.

Diese Eigenschaft ist schreibgeschützt.

PasswordFormat-Eigenschaft

Ein in der Konfigurationsdatei (Web.config) angegebener MembershipPasswordFormat-Wert.

Die PasswordFormat-Eigenschaft gibt das Format an, in dem Kennwörter gespeichert werden. Kennwörter können in den Kennwortformaten Clear, Encrypted und Hashed gespeichert werden. Clear-Kennwörter werden als reiner Text gespeichert, wodurch die Leistung der Kennwortspeicherung und des Kennwortabrufs verbessert wird. Diese Methode ist aber weniger sicher, da die Kennwörter leicht gelesen werden können, wenn die Datenquelle beeinträchtigt wird. Encrypted-Kennwörter werden beim Speichern verschlüsselt und können zum Kennwortvergleich oder Kennwortabruf entschlüsselt werden. Dies erfordert eine zusätzliche Verarbeitung für Kennwortspeicher und -abruf, ist aber sicherer, da die Kennwörter nicht leicht ermittelt werden können, wenn die Datenquelle beschädigt ist. Hashed-Kennwörter werden beim Speichern in die Datenbank unter Verwendung eines Hashalgorithmus und eines zufällig generierten Salt-Werts mit einem Hash versehen. Wenn ein Kennwort überprüft wird, wird es mit dem Saltwert in der Datenbank zur Überprüfung gehasht. Hashkennwörter können nicht abgerufen werden.

Kennwortwerte können Sie mit der virtuellen EncryptPassword-Methode und der virtuellen DecryptPassword-Methode der MembershipProvider-Klasse verschlüsseln und entschlüsseln, oder Sie können einen eigenen Verschlüsselungscode angeben. Wenn Sie die virtuelle EncryptPassword-Methode und die virtuelle DecryptPassword-Methode der MembershipProvider-Klasse verwenden, werden die Encrypted-Kennwörter mithilfe der im machineKey-Element der Konfigurationsdatei angegebenen Schlüsselinformationen verschlüsselt.

Diese Eigenschaft ist schreibgeschützt.

MaxInvalidPasswordAttempts-Eigenschaft

Ein in der Konfigurationsdatei (Web.config) angegebener Integer-Wert.

Die MaxInvalidPasswordAttempts-Eigenschaft schützt zusammen mit der PasswordAttemptWindow-Eigenschaft davor, dass eine unerwünschte Quelle das Kennwort oder die Kennwortantwort eines Mitgliedschaftsbenutzers durch wiederholte Versuche errät. Wenn die Anzahl der ungültigen Kennwörter oder ungültigen Kennwortantworten für einen Mitgliedschaftsbenutzer die MaxInvalidPasswordAttempts innerhalb der durch PasswordAttemptWindow ausgewiesenen Minuten übersteigt, wird der Mitgliedschaftsbenutzer durch Festlegen der IsLockedOut-Eigenschaft auf true gesperrt, bis die Sperre mithilfe der UnlockUser-Methode aufgehoben wird. Wenn vor Erreichen von MaxInvalidPasswordAttempts ein gültiges Kennwort bzw. eine gültige Kennwortantwort angegeben wird, wird der Zähler mit der Anzahl der ungültigen Versuche auf null zurückgesetzt.

Wenn die RequiresQuestionAndAnswer-Eigenschaft auf false festgelegt wird, werden ungültige Kennwortantwortversuche nicht verfolgt.

Ungültige Kennwörter und Kennwortantworten werden in den Methoden ValidateUser, ChangePassword, ChangePasswordQuestionAndAnswer, GetPassword und ResetPassword verfolgt.

Diese Eigenschaft ist schreibgeschützt.

PasswordAttemptWindow-Eigenschaft

Ein in der Konfigurationsdatei (Web.config) angegebener Integer-Wert.

Eine Beschreibung finden Sie in der Beschreibung der MaxInvalidPasswordAttempts-Eigenschaft.

Diese Eigenschaft ist schreibgeschützt.

ApplicationName-Eigenschaft

Der Name der Anwendung, die die in der Konfigurationsdatei (Web.config) angegebenen Mitgliedschaftsinformationen verwendet. Der ApplicationName wird mit den entsprechenden Benutzerinformationen in der Datenquelle gespeichert und bei der Abfrage dieser Informationen verwendet. Weitere Informationen finden Sie im Abschnitt über ApplicationName weiter unten in diesem Thema.

Diese Eigenschaft ist für Lese- und Schreibzugriff verfügbar und entspricht standardmäßig dem ApplicationPath, falls nicht explizit anders angegeben.

MembershipProvider..::.CreateUser-Methode

Verwendet den Namen eines neuen Benutzers, ein Kennwort und eine E-Mail-Adresse als Eingabe und fügt einen neuen Benutzer für die Anwendung in der Datenquelle hinzu. Die CreateUser-Methode gibt ein MembershipUser-Objekt mit den Informationen des neu angelegten Benutzers zurück. Die CreateUser-Methode definiert auch einen out-Parameter (in Visual Basic können Sie ByRef verwenden), der einen MembershipCreateStatus-Wert zurückgibt. Dieser zeigt an, ob der Benutzer erfolgreich angelegt wurde, oder gibt einen Grund an, weshalb der Benutzer nicht erstellt werden konnte.

Die CreateUser-Methode löst das ValidatingPassword-Ereignis aus, wenn ein MembershipValidatePasswordEventHandler angegeben wurde. Abhängig vom Ergebnis des Ereignisses wird der Vorgang zum Anlegen des Benutzers fortgesetzt oder abgebrochen. Sie können die virtuelle Methode OnValidatingPassword verwenden, um den angegebenen MembershipValidatePasswordEventHandler auszuführen.

UpdateUser-Methode

Verwendet ein MembershipUser-Objekt mit den Benutzerinformationen als Eingabe und aktualisiert die Datenquelle mit den angegebenen Werten.

DeleteUser-Methode

Verwendet einen Benutzernamen als Eingabe und löscht die Informationen zu diesem Benutzer aus der Datenquelle. Die DeleteUser-Methode gibt true zurück, wenn der Benutzer erfolgreich gelöscht wurde. Ansonsten wird false zurückgegeben. Ein zusätzlicher Boolean-Parameter gibt an, ob weitere benutzerbezogene Daten wie Rollen- oder Profilinformationen ebenfalls gelöscht werden sollen.

ValidateUser-Methode

Verwendet einen Benutzernamen und ein Kennwort als Eingabe und überprüft, ob die Werte mit denen in der Datenquelle übereinstimmen. Bei Übereinstimmung gibt die ValidateUser-Methode true zurück, ansonsten false.

GetUser-Methode

Verwendet eine eindeutige Benutzer-ID und einen Boolean-Wert als Eingabe, der angibt, ob der LastActivityDate-Wert des Benutzers aktualisiert werden soll. Falls ja, wird dadurch angezeigt, dass der Benutzer gerade online ist. Die GetUser-Methode gibt ein MembershipUser-Objekt mit den aktuellen Werten für den angegebenen Benutzer aus der Datenquelle zurück. Wenn der Benutzername nicht in der Datenquelle gefunden wird, gibt die GetUser-Methode null (Nothing in Visual Basic) zurück.

GetUser-Methode

Verwendet einen Benutzernamen und einen Boolean-Wert als Eingabe, der angibt, ob der LastActivityDate-Wert des Benutzers aktualisiert werden soll. Falls ja, wird dadurch angezeigt, dass der Benutzer gerade online ist. Die GetUser-Methode gibt ein MembershipUser-Objekt mit den aktuellen Werten aus der Datenquelle für den angegebenen Benutzer zurück. Wenn der Benutzername nicht in der Datenquelle gefunden wird, gibt die GetUser-Methode null (Nothing in Visual Basic) zurück.

GetAllUsers-Methode

Gibt eine MembershipUserCollection mit den MembershipUser-Objekten für alle Benutzer in der Datenquelle zurück.

Die von GetAllUsers zurückgegebenen Ergebnisse werden vom pageIndex-Parameter und vom pageSize-Parameter eingeschränkt. Der pageSize-Parameter bezeichnet die maximale Anzahl von MembershipUser-Objekten, die in MembershipUserCollection zurückgegeben werden sollen. Der pageIndex-Parameter bezeichnet die Ergebnisseite, die zurückgegeben werden soll, wobei 0 (null) die erste Seite bezeichnet. Der totalRecords-Parameter ist ein out-Parameter, der auf die Gesamtzahl der Mitgliedschaftsbenutzer festgelegt wird. Wenn beispielsweise die Datenbank für die Anwendung 13 Benutzer enthält und pageIndex den Wert 1 und pageSize den Wert 5 hat, enthält die zurückgegebene MembershipUserCollection den sechsten bis einschließlich zehnten zurückgegebenen Benutzer. totalRecords wird auf 13 festgelegt.

GetNumberOfUsersOnline-Methode

Gibt einen ganzzahligen Wert mit der Anzahl der Benutzer in der Datenquelle zurück, bei denen LastActivityDate größer als das aktuelle Datum minus der UserIsOnlineTimeWindow-Eigenschaft ist. Die UserIsOnlineTimeWindow-Eigenschaft ist ein ganzzahliger Wert, der die Anzahl der Minuten angibt, anhand derer bestimmt wird, ob ein Benutzer online ist.

ResetPassword-Methode

Verwendet einen Benutzernamen und eine Kennwortantwort als Eingabe und generiert ein neues, zufälliges Kennwort für den angegebenen Benutzer. Die ResetPassword-Methode aktualisiert die Benutzerinformationen in der Datenquelle mit dem neuen Kennwortwert und gibt das neue Kennwort als string zurück. Eine bequeme Möglichkeit, ein zufälliges Kennwort zu generieren, ist die GeneratePassword-Methode der Membership-Klasse.

Die ResetPassword-Methode stellt sicher, dass die EnablePasswordReset-Eigenschaft vor dem Ausführen einer Aktion auf true festgelegt wird. Wenn die EnablePasswordReset-Eigenschaft den Wert false hat, wird eine NotSupportedException ausgelöst. Die ResetPassword-Methode überprüft auch den Wert der RequiresQuestionAndAnswer-Eigenschaft. Wenn die RequiresQuestionAndAnswer-Eigenschaft den Wert true hat, überprüft die ResetPassword-Methode den Wert des angegebenen Antwortparameters anhand der gespeicherten Kennwortantwort in der Datenquelle. Wenn es keine Übereinstimmung gibt, wird eine MembershipPasswordException ausgelöst.

Die ResetPassword-Methode löst zur Validierung des neu generierten Kennworts das ValidatingPassword-Ereignis aus, wenn ein MembershipValidatePasswordEventHandler angegeben wurde. Abhängig vom Ergebnis des Ereignisses wird das Kennwort zurückgesetzt oder der Vorgang abgebrochen. Sie können die virtuelle Methode OnValidatingPassword verwenden, um den angegebenen MembershipValidatePasswordEventHandler auszuführen.

GetPassword-Methode

Verwendet einen Benutzernamen und eine Kennwortantwort als Eingabe und ruft das Kennwort für diesen Benutzer aus der Datenquelle ab. Anschließend wird das Kennwort als string zurückgegeben.

GetPassword stellt sicher, dass die EnablePasswordRetrieval-Eigenschaft vor dem Ausführen einer Aktion auf true festgelegt wird. Wenn die EnablePasswordRetrieval-Eigenschaft den Wert false hat, wird eine ProviderException ausgelöst.

Die GetPassword-Methode überprüft auch den Wert der RequiresQuestionAndAnswer-Eigenschaft. Wenn die RequiresQuestionAndAnswer-Eigenschaft den Wert true hat, überprüft die GetPassword-Methode den Wert des angegebenen Antwortparameters anhand der gespeicherten Kennwortantwort in der Datenquelle. Wenn es keine Übereinstimmung gibt, wird eine MembershipPasswordException ausgelöst.

GetUserNameByEmail-Methode

Verwendet eine E-Mail-Adresse als Eingabe und gibt den ersten Benutzernamen aus der Datenquelle zurück, dessen E-Mail-Adresse mit dem angegebenen email-Parameterwert übereinstimmt.

Wenn kein Benutzername mit einer passenden E-Mail-Adresse gefunden wird, wird eine leere Zeichenfolge zurückgegeben.

Wenn mehrere Benutzernamen mit einer passenden E-Mail-Adresse gefunden werden, wird nur der erste Benutzername zurückgegeben.

ChangePassword-Methode

Verwendet den Benutzernamen, das aktuelle Kennwort und ein neues Kennwort als Eingabe und aktualisiert das Kennwort in der Datenquelle, wenn der angegebene Benutzername und das aktuelle Kennwort gültig sind. Die ChangePassword-Methode gibt true zurück, wenn das Kennwort erfolgreich aktualisiert wurde. Ansonsten wird false zurückgegeben.

Die ChangePassword-Methode löst das ValidatingPassword-Ereignis aus, wenn ein MembershipValidatePasswordEventHandler angegeben wurde. Abhängig vom Ergebnis des Ereignisses wird der Vorgang zum Ändern des Kennworts fortgesetzt oder abgebrochen. Sie können die virtuelle OnValidatingPassword-Methode verwenden, um den angegebenen MembershipValidatePasswordEventHandler auszuführen.

ChangePasswordQuestionAndAnswer-Methode

Verwendet den Benutzernamen, das Kennwort, eine Kennwortfrage sowie eine Kennwortantwort als Eingabe und aktualisiert die Kennwortfrage und -antwort in der Datenquelle, wenn der angegebene Benutzername und das Kennwort gültig sind. Die ChangePasswordQuestionAndAnswer-Methode gibt true zurück, wenn die Kennwortfrage und -antwort erfolgreich aktualisiert wurden. Ansonsten wird false zurückgegeben.

Wenn der angegebene Benutzername und das Kennwort nicht gültig sind, wird false zurückgegeben.

FindUsersByName-Methode

Gibt eine Liste von Mitgliedschaftsbenutzern zurück, deren Benutzername mit dem angegebenen usernameToMatch für den konfigurierten ApplicationName übereinstimmt. Wenn zum Beispiel der usernameToMatch-Parameter auf "Benutzer" festgelegt ist, werden die Benutzer "Benutzer1", "Benutzer2", "Benutzer3" usw. zurückgegeben. Platzhalter werden abhängig von der Datenquelle unterstützt. Benutzer werden in der alphabetischen Reihenfolge der Benutzernamen zurückgegeben.

Die von der FindUsersByName-Methode zurückgegebenen Ergebnisse werden vom pageIndex-Parameter und vom pageSize-Parameter eingeschränkt. Der pageSize-Parameter bezeichnet die Anzahl von MembershipUser-Objekten, die in der MembershipUserCollection zurückgegeben werden sollen. Der pageIndex-Parameter gibt an, welche Ergebnisseite zurückgegeben wird, wobei 1 für die erste Seite steht. Der totalRecords-Parameter ist ein out-Parameter, der auf die Gesamtzahl der Mitgliedschaftsbenutzer festgelegt wird, die mit dem usernameToMatch-Wert übereinstimmen. Wenn beispielsweise 13 Benutzer gefunden wurden, die ganz oder teilweise mit dem usernameToMatch übereinstimmen, und pageIndex den Wert 2 und pageSize den Wert 5 hat, enthält die zurückgegebene MembershipUserCollection den sechsten bis einschließlich zehnten zurückgegebenen Benutzer. totalRecords wird auf 13 festgelegt.

FindUsersByEmail-Methode

Gibt eine Liste von Mitgliedschaftsbenutzern zurück, deren Benutzername mit dem angegebenen emailToMatch für den konfigurierten ApplicationName übereinstimmt. Wenn zum Beispiel der emailToMatch-Parameter auf "adresse@example.com" festgelegt wurde, werden Benutzer mit den E-Mail-Adressen "adresse1@example.com", "adresse2@example.com" usw. zurückgegeben. Platzhalter werden abhängig von der Datenquelle unterstützt. Benutzer werden in der alphabetischen Reihenfolge der Benutzernamen zurückgegeben.

Die von FindUsersByEmail zurückgegebenen Ergebnisse werden vom pageIndex-Parameter und vom pageSize-Parameter eingeschränkt. Der pageSize-Parameter bezeichnet die Anzahl von MembershipUser-Objekten, die in der MembershipUserCollection-Auflistung zurückgegeben werden sollen. Der pageIndex-Parameter bezeichnet die Ergebnisseite, die zurückgegeben werden soll, wobei 1 (null) die erste Seite bezeichnet. Der totalRecords-Parameter ist ein out-Parameter, der auf die Gesamtzahl der Mitgliedschaftsbenutzer festgelegt wird, die mit dem emailToMatch-Wert übereinstimmen. Wenn beispielsweise 13 Benutzer gefunden wurden, die ganz oder teilweise mit dem emailToMatch übereinstimmen, und pageIndex den Wert 2 und pageSize den Wert 5 hat, enthält die zurückgegebene MembershipUserCollection den sechsten bis einschließlich zehnten zurückgegebenen Benutzer. totalRecords wird auf 13 festgelegt.

UnlockUser-Methode

Verwendet einen Benutzernamen als Eingabe und aktualisiert das Feld in der Datenquelle, das die IsLockedOut-Eigenschaft speichert, mit dem Wert false. Die UnlockUser-Methode gibt true zurück, wenn der Datensatz für den Mitgliedschaftsbenutzer erfolgreich aktualisiert wurde. Ansonsten wird false zurückgegeben.

Mitgliedschaftsanbieter speichern Benutzerinformationen für jede Anwendung eindeutig. Somit kann dieselbe Datenquelle von mehren ASP.NET-Anwendungen verwendet werden, ohne dass die Erstellung doppelter Benutzernamen zu einem Konflikt führt. Alternativ dazu können mehrere ASP.NET-Anwendungen dieselbe Benutzerdatenquelle durch Angabe desselben ApplicationName verwenden.

Da Benutzerinformationen von Mitgliedschaftsanbietern für jede Anwendung eindeutig gespeichert werden, müssen Datenschema, Abfragen sowie Aktualisierungen den Anwendungsnamen enthalten. Der folgende Befehl wird beispielsweise verwendet, um einen Benutzernamen anhand der E-Mail-Adresse aus einer Datenbank abzurufen. Dabei wird sichergestellt, dass die ApplicationName-Eigenschaft in der Abfrage enthalten ist.

SELECT Username FROM MyUserTable 
  WHERE Email = 'someone@example.com' AND ApplicationName = 'MyApplication'

Sie können die Mitgliedschaftsanbieterschnittstellen um zusätzliche Funktionen erweitern, die von der abstrakten Klasse ProviderBase und der abstrakten Klasse MembershipProvider nicht zur Verfügung gestellt werden. Alle öffentlichen Member, die Sie zu Ihrem Mitgliedschaftsanbieter hinzufügen, sind über die Provider-Eigenschaft oder die Providers-Eigenschaft der Membership-Klasse zugänglich.

Ein Beispiel hierfür wäre eine LockUser-Methode, die die IsLockedOut-Eigenschaft auf den Wert true festlegt. Das folgende Beispiel veranschaulicht, wie die Provider-Eigenschaft, die den Standardmitgliedschaftsanbieter für eine Anwendung verfügbar macht, für den Aufruf der benutzerdefinierten LockUser-Methode in einen benutzerdefinierten Typ umgewandelt wird.

Visual Basic
Dim p As MyCustomProvider = CType(Membership.Provider, MyCustomProvider)
p.LockUser(username)
C#
MyCustomProvider p = (MyCustomProvider)Membership.Provider;
p.LockUser(username);

Für jeden Mitgliedschaftsanbieter, der in der Konfiguration einer Anwendung angegeben ist, instanziiert ASP.NET eine einzelne Mitgliedschaftsanbieterinstanz, die für alle von einem HttpApplication-Objekt verarbeiteten Anfragen verwendet wird. Folglich können mehrere Anforderungen gleichzeitig ausgeführt werden. ASP.NET gewährleistet nicht die Threadsicherheit der Aufrufe zum Anbieter. Sie müssen selbst dafür sorgen, dass der Anbietercode threadsicher ist. Beispielsweise sollte das Herstellen einer Verbindung mit einer Datenbank oder das Öffnen einer Datei zum Bearbeiten im aufgerufenen Member erfolgen (z. B. MembershipProvider..::.CreateUser). Dagegen sollte es vermieden werden, eine Datei zu öffnen oder eine Datenbankverbindung aufzubauen, wenn die Initialize-Methode aufgerufen wird.

Communityinhalt   Was ist Community Content?
Neuen Inhalt hinzufügen RSS  Anmerkungen
Processing
© 2012 Microsoft. Alle Rechte vorbehalten. Nutzungsbedingungen | Markenzeichen | Informationen zur Datensicherheit
Page view tracker