SqlMembershipProvider.ChangePasswordQuestionAndAnswer 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í.
Actualiza la pregunta y respuesta de la contraseña para un usuario en la base de datos de pertenencia de SQL Server.
public:
override bool ChangePasswordQuestionAndAnswer(System::String ^ username, System::String ^ password, System::String ^ newPasswordQuestion, System::String ^ newPasswordAnswer);
public override bool ChangePasswordQuestionAndAnswer (string username, string password, string newPasswordQuestion, string newPasswordAnswer);
override this.ChangePasswordQuestionAndAnswer : string * string * string * string -> bool
Public Overrides Function ChangePasswordQuestionAndAnswer (username As String, password As String, newPasswordQuestion As String, newPasswordAnswer As String) As Boolean
Parámetros
- username
- String
Usuario para el que se va a cambiar la pregunta y respuesta de la contraseña.
- password
- String
Contraseña para el usuario especificado.
- newPasswordQuestion
- String
Nueva pregunta de contraseña para el usuario especificado.
- newPasswordAnswer
- String
Nueva respuesta a la contraseña para el usuario especificado.
Devoluciones
Es true
si la actualización se realizó correctamente; en caso contrario, es false
. También se devuelve un valor de false
si password
es incorrecto, si el usuario queda bloqueado 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
password
es una cadena vacía o tiene más de 128 caracteres.
o bien
newPasswordQuestion
es una cadena vacía o tiene más de 256 caracteres.
o bien
newPasswordAnswer
es una cadena vacía o tiene más de 128 caracteres.
o bien
La versión codificada de newPasswordAnswer
tiene más de 128 caracteres.
username
es null
.
O bien
password
es null
.
o bien
newPasswordQuestion
es null
y RequiresQuestionAndAnswer es true
.
o bien
newPasswordAnswer
es null
y RequiresQuestionAndAnswer es true
.
Error al cambiar la pregunta y respuesta de la contraseña en la base de datos.
Ejemplos
En el ejemplo de código siguiente se actualiza la pregunta y respuesta de contraseña de un usuario.
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 ChangePasswordQuestion_OnClick(object sender, EventArgs args)
{
try
{
if (Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name,
PasswordTextbox.Text,
QuestionTextbox.Text,
AnswerTextbox.Text))
Msg.Text = "Password question and answer changed.";
else
Msg.Text = "Change failed. Please reenter your values and try again.";
}
catch (System.Configuration.Provider.ProviderException e)
{
Msg.Text = "Change failed. Please reenter your values and try again.";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td>Password:</td>
<td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
ControlToValidate="PasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Question:</td>
<td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
ControlToValidate="QuestionTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Answer:</td>
<td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
ControlToValidate="AnswerTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button id="ChangePasswordQuestionButton"
Text="Change Password Question and Answer"
OnClick="ChangePasswordQuestion_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 ChangePasswordQuestion_OnClick(sender As Object, args As EventArgs)
Try
If Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name, _
PasswordTextbox.Text, _
QuestionTextbox.Text, _
AnswerTextbox.Text) Then
Msg.Text = "Password question and answer changed."
Else
Msg.Text = "Change failed. Please reenter your values and try again."
End If
Catch e As System.Configuration.Provider.ProviderException
Msg.Text = "Change failed. Please reenter your values and try again."
End Try
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td>Password:</td>
<td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
ControlToValidate="PasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Question:</td>
<td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
ControlToValidate="QuestionTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Answer:</td>
<td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
ControlToValidate="AnswerTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button id="ChangePasswordQuestionButton"
Text="Change Password Question and Answer"
OnClick="ChangePasswordQuestion_OnClick"
runat="server" /></td>
</tr>
</table>
</form>
</body>
</html>
Comentarios
La clase llama MembershipUser a este método para actualizar la pregunta y respuesta de contraseña de un usuario de la base de datos de SQL Server que se especifica en el archivo de configuración de la aplicación ASP.NET (Web.config). La respuesta de contraseña se cifra con el formato especificado en la PasswordFormat propiedad .
Requerir una pregunta y respuesta de contraseña proporciona una capa adicional de seguridad al recuperar o restablecer la contraseña de un usuario. Al crear un nombre de usuario, un usuario puede proporcionar una pregunta y respuesta que se puede usar más adelante para recuperar o restablecer una contraseña olvidada. El ChangePasswordQuestionAndAnswer método actualiza la pregunta y respuesta de contraseña para un usuario de pertenencia.
Si se proporciona una contraseña incorrecta al ChangePasswordQuestionAndAnswer método , los contadores internos que realizan un seguimiento de los intentos de contraseña no válidos se incrementan en uno. Esto puede provocar que el usuario se bloquee y no pueda iniciar sesión hasta que se borre el estado del bloqueo llamando 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.
La longitud máxima de la pregunta de contraseña es de 256 caracteres. La longitud máxima de la respuesta de contraseña es de 128 caracteres.
Para obtener más información, vea RequiresQuestionAndAnswer, ResetPassword y GetPassword.
Los espacios iniciales y finales se recortan de todos los valores de parámetro.