Compartir vía


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

El usuario para el que se va a actualizar la contraseña.

oldPassword
String

Contraseña actual del usuario especificado.

newPassword
String

Nueva contraseña para el usuario especificado.

Devoluciones

true si la contraseña se actualizó correctamente. false Si la contraseña antigua proporcionada no es válida, 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

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

O bien

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

O bien

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

O bien

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

O bien

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

O bien

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

O bien

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

username es null.

O bien

oldPassword es null.

O bien

newPassword es null.

username no se encontró en la base de datos.

Error al establecer el nuevo valor de contraseña en 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 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 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 dar lugar a 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 a cero. Para obtener más información, consulte las MaxInvalidPasswordAttempts propiedades y PasswordAttemptWindow .

Puede llamar directamente al ChangePassword método obteniendo primero 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