none
Validar usuario con consulta linq c# RRS feed

  • Pregunta

  • Estoy realizando un login , por el cual debo validar si el campo usuario y contraseña que fueron ingresador en el formulario de login existen dentro de la base de datos, estoy realizando una consulta linq dentro del metodo login por el cual deseo pasar los paramento a las variables que declare dentro del metodo osea user y contra.

    Mi problema es que no terminar de validar los valores por el cual siempre deja ingresar a cualquier texto que se escriba entra directamente al formulario menuprincipal. No se si esta sea la forma correcta de realizar este procedimiento.

    ESTO ES LA CLASE USUARIO_L EN EL CAPA LOGICA

    public bool Login(string user, string contra)
            {
                using (programacion_ii_c db = new programacion_ii_c())
                {
                    try
                    {
                        var qw = from u in db.Usuarios
                                 join x in db.Roles
                                 on u.IdUsuario equals x.IdRol
                                 where u.Usuario == user && u.Contrasena == contra
                                 select new
                                 {
                                     Nombres = u.Nombres,
                                     Usuario = u.Usuario,
                                     IdUsuario = u.IdUsuario,
                                     IdRol = x.IdRol,
                                     Rol = x.Nombre,
                                     Codigo = x.Codigo
                                 };
                                                                  
                       return true;
                    }
                    catch (Exception ex)
                    {
                        return false;
                        throw ex;
                       
                    }
                }
            }

    ESTO ES EN LA CAPA PRESENTACION DEL FORMULARIO LOGIN EN EL BOTON ACCEDER

    private void BtnAcceder_Click(object sender, EventArgs e)
            {
                if (TxtUsuario.Text != "Usuario")
                {
                    if (TxtContraseÒa.Text != "Contrasena")
                    {

                        Usuario_E usuario = new Usuario_E();                
                        Usuario_L acceso = new Usuario_L();
                        var validacion = acceso.Login(TxtUsuario.Text, TxtContraseÒa.Text);
                        if (validacion == true)
                        {
                            DialogResult = DialogResult.OK;
                        }
                        else
                        {
                            MessageBox.Show("ERROR", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

                        }
                    }
                    else
                    {
                        MessageBox.Show("Error de contrasena", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    }


                }
                else
                {
                    MessageBox.Show("ERROR", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
               
            }


    • Editado GELDER0799 viernes, 2 de agosto de 2019 16:34
    viernes, 2 de agosto de 2019 16:32

Respuestas

  • Ya lo resolvi en la consulta linq Solo me faltaba una validacion 

    var qw = from u in db.Usuarios
                             join x in db.Roles
                             on u.IdUsuario equals x.IdRol
                             where u.Usuario == user && u.Contrasena == contra
                             select new
                             {
                                 Nombres = u.Nombres,
                                 Usuario = u.Usuario,
                                 IdUsuario = u.IdUsuario,
                                 IdRol = x.IdRol,
                                 Rol = x.Nombre,
                                 Codigo = x.Codigo
                             };
                   //si tiene al menos un valor, devuelve true, caso contrario devuelve false
                   if(qw.ToList().Count>0){
                       return true;
                   }else{
                       return false;
                   }

    viernes, 2 de agosto de 2019 19:20

Todas las respuestas

  • hola

    Lo que noto es que si pasa la validacion asignas DialogResult = DialogResult.OK; pero sino pasa solo muestras un mensaje, pero depsues que sucede ?

    no estas retornando un DialogResult de fallido si es que no autentica

    Quizas se este cerrando el si que el que abrir ese forma valide como fue la respuesta del cierre de ese form

    No se en que contexto esta ese evento BtnAcceder_Click, pero entiendo esta en un form que abres desde otro sitio

    FormLogin login = new FormLogin();
    DialogResult result = login.ShowDialog();
    
    if(result == DialogResult.OK){
    
      //aqui valida correctamente
    
    }

    es importante validar como cerro el form

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 2 de agosto de 2019 18:40
  • Ya lo resolvi en la consulta linq Solo me faltaba una validacion 

    var qw = from u in db.Usuarios
                             join x in db.Roles
                             on u.IdUsuario equals x.IdRol
                             where u.Usuario == user && u.Contrasena == contra
                             select new
                             {
                                 Nombres = u.Nombres,
                                 Usuario = u.Usuario,
                                 IdUsuario = u.IdUsuario,
                                 IdRol = x.IdRol,
                                 Rol = x.Nombre,
                                 Codigo = x.Codigo
                             };
                   //si tiene al menos un valor, devuelve true, caso contrario devuelve false
                   if(qw.ToList().Count>0){
                       return true;
                   }else{
                       return false;
                   }

    viernes, 2 de agosto de 2019 19:20