Partager via


SqlMembershipProvider.ChangePasswordQuestionAndAnswer Méthode

Définition

Met à jour la question et la réponse de mot de passe d'un utilisateur dans la base de données d'appartenances 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

Paramètres

username
String

Utilisateur pour lequel modifier la question de mot de passe et la réponse à celle-ci.

password
String

Mot de passe de l'utilisateur spécifié.

newPasswordQuestion
String

Nouvelle question de mot de passe pour l’utilisateur spécifié.

newPasswordAnswer
String

Nouvelle réponse à la question de mot de passe pour l’utilisateur spécifié.

Retours

true si la mise à jour a réussi ; sinon, false. La valeur false est également retournée si le password est incorrect, si l'utilisateur est verrouillé ou si l'utilisateur n'existe pas dans la base de données.

Exceptions

username est une chaîne vide (""), contient une virgule ou dépasse 256 caractères.

- ou -

password est une chaîne vide ou dont la longueur dépasse 128 caractères.

- ou -

newPasswordQuestion est une chaîne vide ou dont la longueur dépasse 256 caractères.

- ou -

newPasswordAnswer est une chaîne vide ou dont la longueur dépasse 128 caractères.

- ou -

La version encodée de newPasswordAnswer dépasse 128 caractères.

username a la valeur null.

-ou-

password a la valeur null.

- ou -

newPasswordQuestion a la valeur null et RequiresQuestionAndAnswer a la valeur true.

- ou -

newPasswordAnswer a la valeur null et RequiresQuestionAndAnswer a la valeur true.

Une erreur s'est produite pendant la modification de la question et de la réponse de mot de passe dans la base de données.

Exemples

L’exemple de code suivant met à jour la question et la réponse de mot de passe pour un utilisateur.

Notes

Cet exemple utilise la Provider propriété de la Membership classe pour appeler le SqlMembershipProvider spécifié comme defaultProvider dans le fichier Web.config. Si vous devez accéder au fournisseur par défaut en tant que type SqlMembershipProvider, vous pouvez caster la Provider propriété de la Membership classe . Pour accéder à d’autres fournisseurs configurés en tant que type de fournisseur spécifique, vous pouvez y accéder par leur nom configuré avec la Providers propriété de la Membership classe et les caster en tant que type de fournisseur spécifique.

<%@ 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>

Remarques

Cette méthode est appelée par la MembershipUser classe pour mettre à jour la question et la réponse de mot de passe d’un utilisateur dans la base de données SQL Server spécifiée dans le fichier de configuration de l’application ASP.NET (Web.config). La réponse de mot de passe est chiffrée au format spécifié dans la PasswordFormat propriété .

L’exigence d’une question et d’une réponse de mot de passe fournit une couche de sécurité supplémentaire lors de la récupération ou de la réinitialisation du mot de passe d’un utilisateur. Lors de la création d’un nom d’utilisateur, un utilisateur peut fournir une question-réponse qui peut être utilisée ultérieurement pour récupérer ou réinitialiser un mot de passe oublié. La ChangePasswordQuestionAndAnswer méthode met à jour la question et la réponse de mot de passe pour un utilisateur d’appartenance.

Si un mot de passe incorrect est fourni à la ChangePasswordQuestionAndAnswer méthode, les compteurs internes qui suivent les tentatives de mot de passe non valides sont incrémentés d’un. Cela peut entraîner le verrouillage de l’utilisateur et l’impossibilité de se connecter tant que l’état du verrou n’est pas effacé en appelant la UnlockUser méthode. Si le mot de passe correct est fourni et que l’utilisateur n’est pas actuellement verrouillé, les compteurs internes qui suivent les tentatives de mot de passe et de réponse de mot de passe non valides sont réinitialisés à zéro. Pour plus d’informations, consultez les propriétés MaxInvalidPasswordAttempts et PasswordAttemptWindow.

La longueur maximale de la question de mot de passe est de 256 caractères. La longueur maximale de la réponse de mot de passe est de 128 caractères.

Pour plus d'informations, consultez RequiresQuestionAndAnswer, ResetPassword et GetPassword.

Les espaces de début et de fin sont supprimés de toutes les valeurs de paramètre.

S’applique à

Voir aussi