none
Ventana de logeo, buenas practicas y otras preguntas.

    Pregunta

  • Hola, estoy haciendo un formulario de logeo y me gustaria que me orienten sobre buenas practicas y sobre otras cosillas, este el codigo que estoy implementando:

    using EntityLayer;
    
    namespace GuiLayer
    {
        public partial class MainWindow : Window
        {
    
            public Boolean logeo { get; set; }
    
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                var context = new comercialMODELContainer();
                var usuario = context.usuarios.Where(it => it.cuenta == txt_usu.Text);
    
                if(usuario.Count() != 0 )
                {
                    usuario = usuario.Where(it => it.clave == txt_pwd.Password);
                    
                    if (usuario.Count() != 0)
                    {
                        this.logeo = true;
                        this.Close();
                    }
                }
            }
    
            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                this.logeo = false;
                this.Close();
            }
        }
    }
    

    Lo que deseo saber es:

    1) Es una buena practica la forma en la que realizo el proceso ¿?
    2) Primero comparo el usuario y luego la clave para evitar sql inyection
    3) Como podria hacer para comparar la clave y el usuario en el caso que quisiera hacerlo en una sola linea.

    Gracias desde ya. ¡¡¡

    sábado, 18 de febrero de 2012 23:16

Todas las respuestas

  • Hola,

    1- mm... pues depende la dimesion del proyecto, si es productivo y grande y sabes que llevara mantenimiento y requerira pruebas unitarias, yo nunca dejaria un proceso asi en el UI.

    2- En Entity Framework ya no hay lugal al SQL Injection.

    3- Podrias empezar haciendo uso de la sentencia USING como buena practica, y luciria algo asi:

    using(var context = new comercialModelContainder())
    {
       var usuario =  from u in context.Usuario
                      where u.Cuenta == "nombreUsuario"
                      && u.Clave == "claveUsuario"
                      select u;
    }
    Saludos.


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes

    domingo, 19 de febrero de 2012 16:56
  • Aparte de lo que te comenta Nicoloco,

    Veo que estás haciendo uso de WPF. En WPF se suele trabajar utilizando el patrón de disño MVVM. Te recomiendo que le des un vistazo a estos enlaces:

    http://www.youtube.com/watch?v=p_I_FtZL5zA

    Y a su blog: http://geeks.ms/blogs/jyeray/archive/tags/MVVM/default.aspx.

    Saludos!


    Javier Torrecilla
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    TabControl con Mejoras

    lunes, 20 de febrero de 2012 7:57