Pregunta


A) El libro del que estoy aprendiendo dice que si manejamos el evento Login.Authenticate , tenemos que autenticar a los usuarios por nuestra cuenta. Por lo tanto, el control no & # 8217; t validará automáticamente el nombre de usuario y la contraseña. Pensé que el libro sugirió que esto solo sucedería si reemplazamos el método Login.OnAuthenticate () , pero parece que incluso si solo agregamos un controlador de eventos para el evento Autenticar , la autenticación automática no sucede # 8217; t

Pero ¿por qué es eso? ¿Por qué no funciona el manejo de eventos como lo hace con los eventos Init o Load , donde esencialmente tiene que reemplazar Page.OnInit () y Page.OnLoad () para obtener control sobre el manejo de eventos.


B) Revisé el sitio de MSDN y, básicamente, recomienda que si anulamos Login.OnAuthenticate () , también deberíamos llamar base.OnAuthenticate () . Pero entonces, ¿por qué tendríamos que anular Login.OnAuthenticate () , si obtenemos el mismo efecto con la simple declaración de un controlador de eventos para Login.Authenticate ?


thanx

¿Fue útil?

Solución

No debe anular < código> OnAuthenticate . Este método solo se usa internamente para elevar el Authenticate para los manejadores registrados si hay alguno o se autentica a través del MembershipProvider actual si no hay manejadores registrados. Por lo tanto, para implementar la autenticación personalizada para el control Login , simplemente registre un controlador para el evento Authenticate y configure AuthenticateEventArgs.Authenticated propiedad.

La gestión de eventos para el evento Authenticate funciona exactamente igual que para otros eventos. La única diferencia es que el método OnAuthenticate tiene cierta lógica que determina si se debe usar un MembershipProvider o un controlador de eventos registrado para la autenticación.

Si crea una subclase de Login y anula Login.OnAuthenticate , es aconsejable llamar a base.OnAuthenticate (...) porque contiene la lógica que llama a los controladores de eventos registrados. Si no llama a base.Authenticate (...) , debe llamar a los manejadores de eventos registrados. Pero probablemente no sea necesario crear una subclase de Login en su situación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top