Compartir vía


SqlMembershipProvider.ChangePasswordQuestionAndAnswer Método

Definición

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

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

password
String

Contraseña del usuario especificado.

newPasswordQuestion
String

Nueva pregunta de contraseña para el usuario especificado.

newPasswordAnswer
String

Nueva respuesta de contraseña para el usuario especificado.

Devoluciones

true si la actualización se realizó correctamente; de lo contrario, false. También se devuelve un valor de false si es password incorrecto, el usuario está bloqueado o 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 tiene más de newPasswordAnswer 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 para un usuario.

Nota:

En este ejemplo se usa la Provider propiedad de la Membership clase para llamar SqlMembershipProvider al especificado como en defaultProvider 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 de contraseña y responder a un usuario de la base de datos de SQL Server especificada en el archivo de configuración de la aplicación de ASP.NET (Web.config). La respuesta de contraseña se cifra mediante 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 dar lugar a 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 a cero. Para obtener más información, consulte las MaxInvalidPasswordAttempts propiedades 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