ChangePassword.OnChangingPassword(LoginCancelEventArgs) 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í.
Provoca el evento ChangingPassword antes de que el proveedor de pertenencia cambie la contraseña del usuario.
protected:
virtual void OnChangingPassword(System::Web::UI::WebControls::LoginCancelEventArgs ^ e);
protected virtual void OnChangingPassword (System.Web.UI.WebControls.LoginCancelEventArgs e);
abstract member OnChangingPassword : System.Web.UI.WebControls.LoginCancelEventArgs -> unit
override this.OnChangingPassword : System.Web.UI.WebControls.LoginCancelEventArgs -> unit
Protected Overridable Sub OnChangingPassword (e As LoginCancelEventArgs)
Parámetros
Objeto CancelEventArgs que contiene los datos del evento.
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar una página de ASP.NET que usa un ChangePassword control e incluye un controlador para el ChangingPassword evento denominado ChangingPassword
.
ChangingPassword
compara la contraseña antigua almacenada en la CurrentPassword propiedad con la nueva contraseña almacenada en NewPassword. Si las dos contraseñas son las mismas, se produce un error al cambiar la contraseña.
El ChangePassword control establece la DisplayUserName propiedad en true
para permitir que el usuario escriba su nombre de usuario. Esto significa que el usuario no tiene que iniciar sesión para ver la página.
En el ejemplo de código se supone que el sitio web de ASP.NET se ha configurado para usar ASP.NET pertenencia y autenticación de formularios, y que se ha creado un usuario cuyo nombre y contraseña se conocen. Para obtener más información, vea Cómo: Implementar la autenticación de formularios simples.
<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
//Manually register the event-handling methods.
ChangePassword1.ChangingPassword += new LoginCancelEventHandler(this._ChangingPassword);
}
void _ChangingPassword(Object sender, LoginCancelEventArgs e)
{
if (ChangePassword1.CurrentPassword.ToString() == ChangePassword1.NewPassword.ToString())
{
Message1.Visible = true;
Message1.Text = "Old password and new password must be different. Please try again.";
e.Cancel = true;
}
else
{
//This line prevents the error showing up after a first failed attempt.
Message1.Visible = false;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ChangePassword including a ChangingPassword event handler</title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align:center">
<h1>ChangePassword</h1>
<asp:LoginView ID="LoginView1" Runat="server"
Visible="true">
<LoggedInTemplate>
<asp:LoginName ID="LoginName1" Runat="server" FormatString="You are logged in as {0}." />
<br />
</LoggedInTemplate>
<AnonymousTemplate>
You are not logged in
</AnonymousTemplate>
</asp:LoginView><br />
<asp:ChangePassword ID="ChangePassword1" Runat="server"
BorderStyle="Solid"
BorderWidth="1"
CancelDestinationPageUrl="~/Default.aspx"
DisplayUserName="true"
OnChangingPassword="_ChangingPassword"
ContinueDestinationPageUrl="~/Default.aspx" >
</asp:ChangePassword><br />
<asp:Label ID="Message1" Runat="server" ForeColor="Red" /><br />
<asp:HyperLink ID="HyperLink1" Runat="server"
NavigateUrl="~/Default.aspx">
Home
</asp:HyperLink>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="True" %>
<!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 PageLoad(ByVal Sender As Object, ByVal e As EventArgs)
'Manually register the event-handling methods.
AddHandler ChangePassword1.ChangingPassword, AddressOf Me._ChangingPassword
End Sub
Public Sub _ChangingPassword(ByVal Sender As Object, ByVal e As LoginCancelEventArgs)
If (ChangePassword1.CurrentPassword.ToString() = ChangePassword1.NewPassword.ToString) Then
Message1.Visible = True
Message1.Text = "Old password and new password must be different. Please try again."
e.Cancel = True
Else
'This line prevents the error showing up after a first failed attempt.
Message1.Visible = False
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ChangePassword including a ChangingPassword event handler</title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align:center">
<h1>ChangePassword</h1>
<asp:LoginView ID="LoginView1" Runat="server"
Visible="true">
<LoggedInTemplate>
<asp:LoginName ID="LoginName1" Runat="server" FormatString="You are logged in as {0}." />
<br />
</LoggedInTemplate>
<AnonymousTemplate>
You are not logged in
</AnonymousTemplate>
</asp:LoginView><br />
<asp:ChangePassword ID="ChangePassword1" Runat="server"
BorderStyle="Solid"
BorderWidth="1"
CancelDestinationPageUrl="~/Default.aspx"
DisplayUserName="true"
OnChangingPassword="_ChangingPassword"
ContinueDestinationPageUrl="~/Default.aspx" >
</asp:ChangePassword><br />
<asp:Label ID="Message1" Runat="server" ForeColor="Red" /><br />
<asp:HyperLink ID="HyperLink1" Runat="server"
NavigateUrl="~/Default.aspx">
Home
</asp:HyperLink>
</div>
</form>
</body>
</html>
Comentarios
Se OnChangingPassword llama al método antes de llamar al proveedor de pertenencia especificado en la MembershipProvider propiedad para cambiar la contraseña del usuario.
Use el OnChangingPassword método para realizar cualquier procesamiento necesario antes de cambiar la contraseña, como comprobar la nueva contraseña para asegurarse de que no está en una lista de contraseñas comunes.
El OnChangingPassword método puede cancelar el ChangingPassword evento estableciendo la Cancel propiedad del CancelEventArgs objeto pasado como parámetro e en true
.
Cuando se genera un evento, se invoca el controlador de eventos a través de un delegado. Para obtener más información, vea Control de eventos de servidor en ASP.NET páginas de formularios web.
El método OnChangingPassword también permite que las clases derivadas controlen el evento sin adjuntar ningún delegado. Ésta es la técnica preferida para controlar el evento en una clase derivada.
Notas a los desarrolladores de herederos
Al invalidar el OnChangingPassword(LoginCancelEventArgs) método en una clase derivada, asegúrese de llamar al OnChangingPassword(LoginCancelEventArgs) método de la clase base para que los delegados registrados reciban el evento.
Se aplica a
Consulte también
- OnBubbleEvent(Object, EventArgs)
- ChangingPassword
- Control de eventos de servidor en ASP.NET páginas web
- Introducción a los controles de inicio de sesión de ASP.NET
- Personalización de la apariencia y el comportamiento de los controles de inicio de sesión de ASP.NET
- Plantillas de controles de servidor web de ASP.NET
- Cómo: Mostrar información diferente a usuarios anónimos e conectados
- Pestaña Seguridad de la herramienta de administración de sitios web
- Protección de controles de inicio de sesión
- Prácticas de seguridad básicas para aplicaciones web
- Protección de la pertenencia