2010-04-08 8 views
6

Actualmente estoy trabajando con el control de inicio de sesión ASP.NET. Puedo establecer un texto de falla personalizado y puedo agregar un literal en la página donde se muestra el texto de falla si falla el inicio de sesión. También tengo un resumen de validación en la página en la que recopilo todos los errores que pueden ocurrir (por el momento solo valida que el usuario haya ingresado un nombre de usuario y una contraseña.Control de inicio de sesión de ASP.NET: ¿puedo agregar el texto de falla como un elemento en un resumen de validación?

Sería muy agradable si pudiera agregar el texto fallo del control está registrado como un elemento en el resumen de validación, pero no estoy seguro si esto es posible?

Con la esperanza de que el poder cerebral masiva de stackOverflow me puede dar algunos consejos?

Gracias!

/Thomas Kahn PD. Estoy codificando en C#.

+0

¿Está utilizando el control de inicio de sesión tal como está o ha definido un LayoutTemplate personalizado para él? ¿Hay algo más que el formulario de inicio de sesión que está intentando validar aquí? Lo pido principalmente porque los mensajes de error "informativos" (como "Su contraseña era incorrecta") a menudo se consideran un agujero de seguridad; le ha dado a un pirata informático potencial una información importante; tienen un nombre de usuario válido, así que solo necesitan cambiar la contraseña, donde como un mensaje genérico (digamos "Datos inválidos provistos") significa que pueden necesitar probar ambos. –

+0

¡Hola! ¡Gracias por responder! Sí, estoy usando un LayoutTemplate. Todo lo que requiero del usuario es un nombre de usuario y una contraseña, nada más. La validación actual es solo para verificar si hay campos vacíos. Si el inicio de sesión falla, solo deseo agregar un elemento al resumen de validación que le dice al usuario que el inicio de sesión falló. – tkahn

Respuesta

10

¡Encontré una solución que funciona!

En la página agrego un CustomValidator, así:

<asp:CustomValidator id="vldLoginFailed" runat="server" ErrorMessage="Login failed. Please check your username and password." ValidationGroup="loginControl" Visible="false"></asp:CustomValidator> 

también tengo una ValidationSummary que tiene este aspecto:

<asp:ValidationSummary id="ValidationSummary" ValidationGroup="loginControl" runat="server" DisplayMode="BulletList" CssClass="validationSummary" HeaderText="Please check the following"></asp:ValidationSummary> 

En mi control de acceso agrego un método para OnLoginError, por lo que se ve así:

<asp:Login ID="loginControl" runat="server" VisibleWhenLoggedIn="false" OnLoginError="loginControl_LoginError"> 

En mi código subyacente creo un método que se activa cuando t aquí hay un error de inicio de sesión y se ve así:

protected void loginControl_LoginError(object sender, EventArgs e) 
{ 
    CustomValidator vldLoginFailed = (CustomValidator)loginControl.FindControl("vldLoginFailed"); 
    vldLoginFailed.IsValid = false; 
} 

Así que cuando hay un error de inicio de sesión del método loginControl_LoginError se llamará. Encuentra CustomValidator y establece IsValid en falso. Como CustomValidator pertenece al grupo de validación "loginControl", su mensaje de error se mostrará en ValidationSummary.

0

Potencialmente,

Usted podría reemplazar el método Render en control ValidationSummary la comprobación de los errores reportados por el control de acceso. No estoy seguro de cómo se informan los errores, pero si se utiliza un control de validación para inspeccionar la colección de Página.Validadores obtendrá la información que necesita para actualizar el resultado del Resumen de validación.

+0

¡Gracias por tu aportación! En mi caso, sería demasiado trabajo para poco efecto. Solo estoy usando esto en un lugar de mi web y no es un gran sitio web. Creo que estoy buscando algo parecido a una solución rápida que sea fácil de implementar. Entonces, por otro lado, ¿no siempre estamos buscando eso? ;-) – tkahn

Cuestiones relacionadas