Compartir a través de


SqlMembershipProvider.ChangePasswordQuestionAndAnswer Método

Definición

Actualiza la pregunta y respuesta de la contraseña para un usuario en la base de datos de pertenencia de 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

Parámetros

username
String

Usuario para el que se va a cambiar la pregunta y respuesta de la contraseña.

password
String

Contraseña para el usuario especificado.

newPasswordQuestion
String

Nueva pregunta de contraseña para el usuario especificado.

newPasswordAnswer
String

Nueva respuesta a la contraseña para el usuario especificado.

Devoluciones

Es true si la actualización se realizó correctamente; en caso contrario, es false. También se devuelve un valor de false si password es incorrecto, si el usuario queda bloqueado o si el usuario no existe en la base de datos.

Excepciones

username es una cadena vacía (""), contiene una coma o tiene más de 256 caracteres.

o bien

password es una cadena vacía o tiene más de 128 caracteres.

o bien

newPasswordQuestion es una cadena vacía o tiene más de 256 caracteres.

o bien

newPasswordAnswer es una cadena vacía o tiene más de 128 caracteres.

o bien

La versión codificada de newPasswordAnswer tiene más de 128 caracteres.

username es null.

O bien

password es null.

o bien

newPasswordQuestion es null y RequiresQuestionAndAnswer es true.

o bien

newPasswordAnswer es null y RequiresQuestionAndAnswer es true.

Error al cambiar la pregunta y respuesta de la contraseña en la base de datos.

Ejemplos

En el ejemplo de código siguiente se actualiza la pregunta y respuesta de contraseña de un usuario.

Nota

En este ejemplo se usa la Provider propiedad de la Membership clase para llamar al SqlMembershipProvider especificado como defaultProvider en el archivo Web.config. Si necesita tener acceso al proveedor predeterminado como tipo SqlMembershipProvider, puede convertir la Provider propiedad de la Membership clase . Para acceder a otros proveedores configurados como un tipo de proveedor específico, puede acceder a ellos por su nombre configurado con la Providers propiedad de la Membership clase y convertirlos como el tipo de proveedor específico.

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

Comentarios

La clase llama MembershipUser a este método para actualizar la pregunta y respuesta de contraseña de un usuario de la base de datos de SQL Server que se especifica en el archivo de configuración de la aplicación ASP.NET (Web.config). La respuesta de contraseña se cifra con el formato especificado en la PasswordFormat propiedad .

Requerir una pregunta y respuesta de contraseña proporciona una capa adicional de seguridad al recuperar o restablecer la contraseña de un usuario. Al crear un nombre de usuario, un usuario puede proporcionar una pregunta y respuesta que se puede usar más adelante para recuperar o restablecer una contraseña olvidada. El ChangePasswordQuestionAndAnswer método actualiza la pregunta y respuesta de contraseña para un usuario de pertenencia.

Si se proporciona una contraseña incorrecta al ChangePasswordQuestionAndAnswer método , los contadores internos que realizan un seguimiento de los intentos de contraseña no válidos se incrementan en uno. Esto puede provocar que el usuario se bloquee y no pueda iniciar sesión hasta que se borre el estado del bloqueo llamando al UnlockUser método . Si se proporciona la contraseña correcta y el usuario no está bloqueado actualmente, los contadores internos que realizan un seguimiento de los intentos de contraseña y respuesta de contraseña no válidos se restablecen en cero. Para más información, vea las propiedades MaxInvalidPasswordAttempts y PasswordAttemptWindow.

La longitud máxima de la pregunta de contraseña es de 256 caracteres. La longitud máxima de la respuesta de contraseña es de 128 caracteres.

Para obtener más información, vea RequiresQuestionAndAnswer, ResetPassword y GetPassword.

Los espacios iniciales y finales se recortan de todos los valores de parámetro.

Se aplica a

Consulte también