Restablece la contraseña de un usuario a una nueva generada automáticamente.
Espacio de nombres: System.Web.Security
Ensamblado: System.Web (en system.web.dll)
Visual Basic (Declaración)
Public Overrides Function ResetPassword ( _
username As String, _
passwordAnswer As String _
) As String
Dim instance As SqlMembershipProvider
Dim username As String
Dim passwordAnswer As String
Dim returnValue As String
returnValue = instance.ResetPassword(username, passwordAnswer)
public override string ResetPassword (
string username,
string passwordAnswer
)
public:
virtual String^ ResetPassword (
String^ username,
String^ passwordAnswer
) override
public String ResetPassword (
String username,
String passwordAnswer
)
public override function ResetPassword (
username : String,
passwordAnswer : String
) : String
Parámetros
- username
Usuario cuya contraseña se va a restablecer.
- passwordAnswer
Respuesta a la contraseña para el usuario especificado.
Valor devuelto
Nueva contraseña del usuario especificado.
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.
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="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 Page_Load(sender As Object, args As EventArgs)
If Not Membership.EnablePasswordReset Then
FormsAuthentication.RedirectToLoginPage()
End If
Msg.Text = ""
If Not IsPostBack Then
Msg.Text = "Please enter a user name."
Else
VerifyUsername()
End If
End Sub
Public Sub VerifyUsername()
Dim user As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False)
If user Is Nothing Then
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
End If
End Sub
Public Sub ResetPassword_OnClick(sender As Object, args As EventArgs)
Dim newPassword As String = ""
Try
newPassword = Membership.Provider.ResetPassword(UsernameTextBox.Text, AnswerTextBox.Text)
Catch e As NotSupportedException
Msg.Text = "An error has occurred resetting your password: " & e.Message & "." & _
"Please check your values and try again."
Catch e As MembershipPasswordException
Msg.Text = "Invalid password answer. Please reenter the answer and try again."
Return
Catch e As System.Configuration.Provider.ProviderException
Msg.Text = "The specified user name does not exist. Please check your value and try again."
End Try
If newPassword <> "" Then
Msg.Text = "Password reset. Your new password is: " & Server.HtmlEncode(newPassword)
Else
Msg.Text = "Password reset failed. Please reenter your values and try again."
End If
End Sub
</script>
<html >
<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>
<%@ 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 >
<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.
.NET Framework
Compatible con: 3.0, 2.0