Freigeben über


SqlMembershipProvider.ChangePasswordQuestionAndAnswer Methode

Definition

Aktualisiert die Kennwortfrage und Antwort für einen Benutzer in der SQL Server-Mitgliedschaftsdatenbank.

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, um die Kennwortfrage und Antwort zu ändern.

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

truewenn das Update erfolgreich war; andernfalls . false Ein Wert von false wird auch zurückgegeben, wenn dies password falsch ist, der Benutzer gesperrt ist oder der Benutzer 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 ist länger als 128 Zeichen.

- oder -

newPasswordQuestion ist eine leere Zeichenfolge oder ist länger als 256 Zeichen.

- oder -

newPasswordAnswer ist eine leere Zeichenfolge oder ist länger als 128 Zeichen.

- oder -

Die codierte Version von newPasswordAnswer 128 Zeichen 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.

Fehler beim Ändern der Kennwortfrage und Antwort in der Datenbank.

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 die SqlMembershipProvider in der Web.config-Datei angegebene defaultProvider Eigenschaft aufzurufen. Wenn Sie als Typ SqlMembershipProviderauf den Standardanbieter zugreifen müssen, können Sie die Provider Eigenschaft der Membership Klasse umwandeln. Wenn Sie auf andere konfigurierte Anbieter als bestimmten Anbietertyp zugreifen möchten, können Sie über den 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 zu aktualisieren und für einen Benutzer in der SQL Server-Datenbank zu beantworten, der in der Konfigurationsdatei der ASP.NET Anwendung angegeben ist (Web.config). Die Kennwortantwort wird mit dem format verschlüsselt, das in der PasswordFormat Eigenschaft angegeben ist.

Das Anfordern 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 der Methode ein falsches Kennwort angegeben ChangePasswordQuestionAndAnswer wird, werden die internen Indikatoren, die ungültige Kennwortversuche nachverfolgen, um eine erhöht. Dies kann dazu führen, dass der Benutzer gesperrt wird und sich erst anmelden kann, wenn der Sperrstatus durch Aufrufen der UnlockUser Methode gelöscht wird. Wenn das richtige Kennwort angegeben wird und der Benutzer zurzeit nicht gesperrt ist, werden die internen Indikatoren, die ungültiges Kennwort und Kennwortantwortversuche nachverfolgen, auf Null zurückgesetzt. Weitere Informationen finden Sie unter den MaxInvalidPasswordAttempts Und PasswordAttemptWindow Eigenschaften.

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 von allen Parameterwerten gekürzt.

Gilt für:

Weitere Informationen