SqlMembershipProvider.ChangePasswordQuestionAndAnswer Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Aktualisiert die Kennwortfrage und -antwort für einen Benutzer in der Mitgliedschaftsdatenbank von SQL Server.
public:
override bool ChangePasswordQuestionAndAnswer(System::String ^ username, System::String ^ password, System::String ^ newPasswordQuestion, System::String ^ newPasswordAnswer);
public override bool ChangePasswordQuestionAndAnswer (string username, string password, string newPasswordQuestion, string newPasswordAnswer);
override this.ChangePasswordQuestionAndAnswer : string * string * string * string -> bool
Public Overrides Function ChangePasswordQuestionAndAnswer (username As String, password As String, newPasswordQuestion As String, newPasswordAnswer As String) As Boolean
Parameter
- username
- String
Der Benutzer, für den Kennwortfrage und -antwort geändert werden sollen.
- password
- String
Das Kennwort für den angegebenen Benutzer.
- newPasswordQuestion
- String
Die neue Kennwortfrage für den angegebenen Benutzer.
- newPasswordAnswer
- String
Die neue Kennwortantwort für den angegebenen Benutzer.
Gibt zurück
true
, wenn die Aktualisierung erfolgreich war, andernfalls false
. Der Wert false
wird auch dann zurückgegeben, wenn das password
falsch, der Benutzer gesperrt oder nicht in der Datenbank vorhanden ist.
Ausnahmen
username
ist eine leere Zeichenfolge (""), enthält ein Komma oder ist länger als 256 Zeichen.
- oder -
password
ist eine leere Zeichenfolge oder länger als 128 Zeichen.
- oder -
newPasswordQuestion
ist eine leere Zeichenfolge oder länger als 256 Zeichen.
- oder -
newPasswordAnswer
ist eine leere Zeichenfolge oder länger als 128 Zeichen.
- oder -
Die codierte Version von newPasswordAnswer
ist länger als 128 Zeichen.
username
ist null
.
- oder -
password
ist null
.
- oder -
newPasswordQuestion
ist null
, und RequiresQuestionAndAnswer ist true
.
- oder -
newPasswordAnswer
ist null
, und RequiresQuestionAndAnswer ist true
.
Beim Ändern der Kennwortfrage und -antwort in der Datenbank ist ein Fehler aufgetreten.
Beispiele
Im folgenden Codebeispiel wird die Kennwortfrage und -antwort für einen Benutzer aktualisiert.
Hinweis
In diesem Beispiel wird die Provider -Eigenschaft der Membership -Klasse verwendet, um den SqlMembershipProvider angegebenen als in defaultProvider
der Web.config-Datei aufzurufen. Wenn Sie auf den Standardanbieter als Typ SqlMembershipProviderzugreifen müssen, können Sie die Provider -Eigenschaft der Membership -Klasse umwandeln. Um auf andere konfigurierte Anbieter als bestimmten Anbietertyp zuzugreifen, können Sie über ihren konfigurierten Namen mit der Providers -Eigenschaft der Membership -Klasse darauf zugreifen und sie als bestimmten Anbietertyp umwandeln.
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void ChangePasswordQuestion_OnClick(object sender, EventArgs args)
{
try
{
if (Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name,
PasswordTextbox.Text,
QuestionTextbox.Text,
AnswerTextbox.Text))
Msg.Text = "Password question and answer changed.";
else
Msg.Text = "Change failed. Please reenter your values and try again.";
}
catch (System.Configuration.Provider.ProviderException e)
{
Msg.Text = "Change failed. Please reenter your values and try again.";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td>Password:</td>
<td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
ControlToValidate="PasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Question:</td>
<td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
ControlToValidate="QuestionTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Answer:</td>
<td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
ControlToValidate="AnswerTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button id="ChangePasswordQuestionButton"
Text="Change Password Question and Answer"
OnClick="ChangePasswordQuestion_OnClick"
runat="server" /></td>
</tr>
</table>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Public Sub ChangePasswordQuestion_OnClick(sender As Object, args As EventArgs)
Try
If Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name, _
PasswordTextbox.Text, _
QuestionTextbox.Text, _
AnswerTextbox.Text) Then
Msg.Text = "Password question and answer changed."
Else
Msg.Text = "Change failed. Please reenter your values and try again."
End If
Catch e As System.Configuration.Provider.ProviderException
Msg.Text = "Change failed. Please reenter your values and try again."
End Try
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td>Password:</td>
<td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
ControlToValidate="PasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Question:</td>
<td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
ControlToValidate="QuestionTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Answer:</td>
<td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
ControlToValidate="AnswerTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button id="ChangePasswordQuestionButton"
Text="Change Password Question and Answer"
OnClick="ChangePasswordQuestion_OnClick"
runat="server" /></td>
</tr>
</table>
</form>
</body>
</html>
Hinweise
Diese Methode wird von der MembershipUser -Klasse aufgerufen, um die Kennwortfrage und -antwort für einen Benutzer in der SQL Server-Datenbank zu aktualisieren, die in der Konfigurationsdatei der ASP.NET Anwendung (Web.config) angegeben ist. Die Kennwortantwort wird mit dem in der PasswordFormat -Eigenschaft angegebenen Format verschlüsselt.
Die Anforderung einer Kennwortfrage und -antwort bietet eine zusätzliche Sicherheitsebene beim Abrufen oder Zurücksetzen des Kennworts eines Benutzers. Beim Erstellen eines Benutzernamens kann ein Benutzer eine Frage und Antwort bereitstellen, die später zum Abrufen oder Zurücksetzen eines vergessenen Kennworts verwendet werden kann. Die ChangePasswordQuestionAndAnswer -Methode aktualisiert die Kennwortfrage und -antwort für einen Mitgliedschaftsbenutzer.
Wenn für die ChangePasswordQuestionAndAnswer Methode ein falsches Kennwort angegeben wird, werden die internen Leistungsindikatoren, die ungültige Kennwortversuche nachverfolgen, um eins erhöht. Dies kann dazu führen, dass der Benutzer gesperrt wird und sich nicht anmelden kann, bis der Sperrstatus durch Aufrufen der UnlockUser -Methode gelöscht wird. Wenn das richtige Kennwort angegeben wird und der Benutzer derzeit nicht gesperrt ist, werden die internen Leistungsindikatoren, die ungültige Kennwörter und Kennwortantwortversuche nachverfolgen, auf Null zurückgesetzt. Weitere Informationen finden Sie in den Ausführungen zur MaxInvalidPasswordAttempts-Eigenschaft und zur PasswordAttemptWindow-Eigenschaft.
Die maximale Länge für die Kennwortfrage beträgt 256 Zeichen. Die maximale Länge für die Kennwortantwort beträgt 128 Zeichen.
Weitere Informationen finden Sie unter RequiresQuestionAndAnswer, ResetPassword und GetPassword.
Führende und nachfolgende Leerzeichen werden auf alle Parameterwerte gekürzt.