Compartir a través de


SqlMembershipProvider.ChangePassword(String, String, String) Método

Definición

Modifica la contraseña de un usuario.

public:
 override bool ChangePassword(System::String ^ username, System::String ^ oldPassword, System::String ^ newPassword);
public override bool ChangePassword (string username, string oldPassword, string newPassword);
override this.ChangePassword : string * string * string -> bool
Public Overrides Function ChangePassword (username As String, oldPassword As String, newPassword As String) As Boolean

Parámetros

username
String

Usuario para el que se va a actualizar la contraseña.

oldPassword
String

Contraseña actual para el usuario especificado.

newPassword
String

Nueva contraseña del usuario especificado.

Devoluciones

Es true si la contraseña se actualizó correctamente. false si la contraseña anterior proporcionada es no válida, si se bloquea el usuario 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

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

o bien

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

o bien

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

o bien

Un suscriptor del evento ValidatingPassword canceló la acción de cambiar la contraseña y la propiedad FailureInformation era null.

o bien

La longitud de newPassword es menor que la longitud mínima especificada en la propiedad MinRequiredPasswordLength.

o bien

El número de caracteres no alfabéticos en newPassword es menor que el número necesario de caracteres no alfabéticos especificado en la propiedad MinRequiredNonAlphanumericCharacters.

o bien

newPassword no pasa la expresión regular definida en la propiedad PasswordStrengthRegularExpression.

username es null.

O bien

oldPassword es null.

O bien

newPassword es null.

No se encontró username en la base de datos.

Se ha producido un error al recuperar la contraseña de la base de datos.

Se produjo una excepción no controlada.

Ejemplos

En el ejemplo de código siguiente se modifica la contraseña del usuario especificado.

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 ChangePassword_OnClick(object sender, EventArgs args)
{
  try
  {
    // Update the password.

    if (Membership.Provider.ChangePassword(User.Identity.Name, OldPasswordTextbox.Text, PasswordTextbox.Text))
    {
      Msg.Text = "Password changed.";
      return;
    }
  }
  catch
  {
  }

  Msg.Text = "Password change failed. Please re-enter your values and try again.";
}


</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Change Password</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Change Password for <%=User.Identity.Name%></h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" />

  <table cellpadding="3" border="0">
    <tr>
      <td>Old Password:</td>
      <td><asp:Textbox id="OldPasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
                                      ControlToValidate="OldPasswordTextbox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>Password:</td>
      <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="PasswordRequiredValidator" runat="server"
                                      ControlToValidate="PasswordTextbox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>Confirm Password:</td>
      <td><asp:Textbox id="PasswordConfirmTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="PasswordConfirmRequiredValidator" runat="server"
                                      ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
                                      Display="Static" 
                                      ErrorMessage="Required" />
          <asp:CompareValidator id="PasswordConfirmCompareValidator" runat="server"
                                      ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
                                      Display="Static" ControlToCompare="PasswordTextBox"
                                      ErrorMessage="Confirm password must match password." />
      </td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="ChangePasswordButton" Text="Change Password" 
                      OnClick="ChangePassword_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 ChangePassword_OnClick(sender As Object, args As EventArgs)
  Try
    ' Update the password.

    If Membership.Provider.ChangePassword(User.Identity.Name, _
                                          OldPasswordTextbox.Text, _
                                          PasswordTextbox.Text) Then 
      Msg.Text = "Password changed."
      Return
    End If
  Catch
  End Try

  Msg.Text = "Password change failed. Please re-enter your values and try again."
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Change Password</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Change Password for <%=User.Identity.Name%></h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" />

  <table cellpadding="3" border="0">
    <tr>
      <td>Old Password:</td>
      <td><asp:Textbox id="OldPasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
                                      ControlToValidate="OldPasswordTextbox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>Password:</td>
      <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="PasswordRequiredValidator" runat="server"
                                      ControlToValidate="PasswordTextbox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>Confirm Password:</td>
      <td><asp:Textbox id="PasswordConfirmTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="PasswordConfirmRequiredValidator" runat="server"
                                      ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
                                      Display="Static" 
                                      ErrorMessage="Required" />
          <asp:CompareValidator id="PasswordConfirmCompareValidator" runat="server"
                                      ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
                                      Display="Static" ControlToCompare="PasswordTextBox"
                                      ErrorMessage="Confirm password must match password." />
      </td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="ChangePasswordButton" Text="Change Password" 
                      OnClick="ChangePassword_OnClick" runat="server" /></td>
    </tr>
  </table>
</form>

</body>
</html>

Comentarios

La clase llama Membership a este método para actualizar la contraseña de un usuario de la base de datos de SQL Server especificada en el archivo de configuración de la aplicación ASP.NET (Web.config).

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

Si se proporciona una contraseña incorrecta al ChangePassword método , el contador interno que realiza un seguimiento de los intentos de contraseña no válidos se incrementa en uno. Esto puede provocar que el usuario se bloquee y no pueda iniciar sesión hasta que se borre el estado del bloqueo mediante una llamada 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.

Puede llamar al ChangePassword método directamente obteniendo una referencia a la SqlMembershipProvider instancia a través de la Provider propiedad de la Membership clase . La Provider propiedad expone el defaultProvider especificado en el archivo Web.config para la aplicación. Proveedores configurados que no son el proveedor predeterminado al que se hace referencia mediante la Providers propiedad .

También puede cambiar las contraseñas de usuario mediante el ChangePassword método .

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

Se aplica a

Consulte también