SqlMembershipProvider.ResetPassword (Método)
Ensamblado: System.Web (en system.web.dll)
| Tipo de excepción | Condición |
|---|---|
| El valor de passwordAnswer no es válido. O bien, La cuenta de usuario está bloqueada actualmente. |
|
| La propiedad EnablePasswordReset se establece en false. |
|
| username no se encuentra en la base de datos de suscripción. O bien, Un suscriptor del evento ValidatingPassword canceló la acción de cambiar la contraseña y la propiedad FailureInformation era referencia null (Nothing en Visual Basic). O bien, Se ha producido un error al recuperar la contraseña de la base de datos. |
|
| username es una cadena vacía (""), contiene una coma o tiene más de 256 caracteres. O bien passwordAnswer es una cadena vacía o tiene más de 128 caracteres y RequiresQuestionAndAnswer es true. O bien passwordAnswer tiene más de 128 caracteres después del cifrado. |
|
| username es referencia null (Nothing en Visual Basic). O bien, passwordAnswer es referencia null (Nothing en Visual Basic) y RequiresQuestionAndAnswer es true. |
|
| Se ha producido una excepción no controlada. |
La clase Membership llama a este método para restablecer la contraseña de un usuario en la base de datos de SQL Server especificada en el archivo de configuración de la aplicación ASP.NET (Web.config) a un nuevo valor generado aleatoriamente. Se devuelve la nueva contraseña.
Nota: |
|---|
| No se puede asegurar que la contraseña aleatoria creada por el método ResetPassword pase la expresión regular en la propiedad PasswordStrengthRegularExpression. Sin embargo, la contraseña aleatoria cumplirá los criterios que se establecen con las propiedades MinRequiredPasswordLength y MinRequiredNonAlphanumericCharacters. |
Se utiliza más comúnmente el método ResetPassword cuando la propiedad PasswordFormat se establece en Hashed. Si un usuario se olvida de una contraseña a la que se ha aplicado un algoritmo hash, no se puede recuperar la contraseña. Sin embargo, el proveedor puede restablecer la contraseña a una nueva generada automáticamente si el usuario proporciona la respuesta a la contraseña correcta.
Si se proporciona una respuesta a la contraseña incorrecta al método ResetPassword, el contador interno que realiza el seguimiento de los intentos incorrectos de respuesta a la contraseña se incrementa en uno. El resultado de todo esto puede ser que el usuario quede bloqueado y no pueda registrarse hasta que el estado de bloqueo desaparezca mediante una llamada al método UnlockUser. Si se proporciona la respuesta de contraseña correcta y el usuario no está bloqueado actualmente, el contador interno que realiza el seguimiento de los intentos incorrectos de respuesta a la contraseña vuelve a ponerse en cero. Para obtener más información, vea las propiedades MaxInvalidPasswordAttempts y PasswordAttemptWindow.
Puede llamar directamente al método ResetPassword si obtiene primero una referencia a la instancia de SqlMembershipProvider desde la propiedad Provider de la clase Membership. La contraseña generada tendrá al menos 14 caracteres o la longitud especificada en la propiedad MinRequiredPasswordLength, y contendrá el número de caracteres no alfanuméricos especificado en la propiedad MinRequiredNonAlphanumericCharacters. No se garantiza que la contraseña pase la expresión regular contenida en la propiedad PasswordStrengthRegularExpression si se especifica una.
Se recortan los espacios al inicio y al final de todos los valores de parámetro.
El ejemplo de código siguiente restablece la contraseña de un usuario y devuelve una nueva generada automáticamente.
Nota: |
|---|
| Este ejemplo utiliza la clase Membership para llamar al objeto SqlMembershipProvider especificado como defaultProvider en el archivo Web.config. Si necesita tener acceso al proveedor predeterminado como un tipo SqlMembershipProvider, puede convertir la propiedad Provider de la clase Membership. Para obtener acceso a otros proveedores configurados como un tipo de proveedor específico, puede hacerlo a través de su nombre configurado con la propiedad Providers de la clase Membership y, después, convertirlos al 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 Page_Load(object sender, EventArgs args) { if (!Membership.EnablePasswordReset) { FormsAuthentication.RedirectToLoginPage(); } Msg.Text = ""; if (!IsPostBack) { Msg.Text = "Please enter a user name."; } else { VerifyUsername(); } } public void VerifyUsername() { MembershipUser user = Membership.GetUser(UsernameTextBox.Text, false); if (user == null) { Msg.Text = "The user name " + Server.HtmlEncode(UsernameTextBox.Text) + " was not found. Please check the value and reenter your user name."; QuestionLabel.Text = ""; QuestionLabel.Enabled = false; AnswerTextBox.Enabled = false; ResetPasswordButton.Enabled = false; } else { QuestionLabel.Text = user.PasswordQuestion; QuestionLabel.Enabled = true; AnswerTextBox.Enabled = true; ResetPasswordButton.Enabled = true; } } public void ResetPassword_OnClick(object sender, EventArgs args) { string newPassword = ""; try { newPassword = Membership.Provider.ResetPassword(UsernameTextBox.Text, AnswerTextBox.Text); } catch (NotSupportedException e) { Msg.Text = "An error has occurred resetting your password: " + e.Message + "." + "Please check your values and try again."; } catch (MembershipPasswordException e) { Msg.Text = "Invalid password answer. Please reenter the answer and try again."; return; } catch (System.Configuration.Provider.ProviderException e) { Msg.Text = "The specified user name does not exist. Please check your value and try again."; } if (newPassword != "") { Msg.Text = "Password reset. Your new password is: " + Server.HtmlEncode(newPassword); } else { Msg.Text = "Password reset failed. Please reenter your values and try again."; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Sample: Reset Password</title> </head> <body> <form id="form1" runat="server"> <h3>Reset Password</h3> <asp:Label id="Msg" runat="server" ForeColor="maroon" /><br /> Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="true" /> <asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server" ControlToValidate="UsernameTextBox" ForeColor="red" Display="Static" ErrorMessage="Required" /><br /> Password Question: <b><asp:Label id="QuestionLabel" runat="server" /></b><br /> Answer: <asp:TextBox id="AnswerTextBox" Columns="60" runat="server" Enabled="false" /> <asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server" ControlToValidate="AnswerTextBox" ForeColor="red" Display="Static" ErrorMessage="Required" Enabled="false" /><br /> <asp:Button id="ResetPasswordButton" Text="Reset Password" OnClick="ResetPassword_OnClick" runat="server" Enabled="false" /> </form> </body> </html>
Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter
Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.
Nota: