SqlMembershipProvider.ChangePassword(String, String, String) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
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.