elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Login Form WinForm c#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Login Form WinForm c#  (Leído 8,452 veces)
evicar

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Login Form WinForm c#
« en: 1 Diciembre 2010, 04:51 am »

Estimados estoy tratando de buscar como generar un login form para mi proyecto winform... e googleado bastante  e encontrado esto:
http://ltuttini.blogspot.com/2010/05/login-usando-password-con-hash.html


me paresio bastante interesante.. pero al momento de llevarlo a mi aplicacio tengo probblemas con UsuarioEntity:
genere una clase llamada :

Código
  1. class LoginService
  2.    {
  3.  
  4.        public static bool Autenticar(string usuario, string password)
  5.        {
  6.            string sql = @"SELECT COUNT(*)
  7.                      FROM Usuarios
  8.                      WHERE NombreLogin = @nombre AND Password = @password";
  9.  
  10.  
  11.            using (SqlConnection conn = new SqlConnection("Data Source=ENZZO-PC\\SQLEXPRESS;Initial Catalog=ISW;Integrated Security=True"))
  12.            {
  13.                conn.Open();
  14.  
  15.                SqlCommand command = new SqlCommand(sql, conn);
  16.                command.Parameters.AddWithValue("@nombre", usuario);
  17.  
  18.                string hash = Helper.EncodePassword(string.Concat(usuario, password));
  19.                command.Parameters.AddWithValue("@password", hash);
  20.  
  21.                int count = Convert.ToInt32(command.ExecuteScalar());
  22.  
  23.                if (count == 0)
  24.                    return false;
  25.                else
  26.                    return true;
  27.  
  28.            }
  29.        }
  30.  
  31.  
  32.        public static UsuarioEntity Insert(string nombre, string apellido, string nombreLogin, string password)
  33.        {
  34.            UsuarioEntity usuario = new UsuarioEntity();
  35.  
  36.            usuario.Nombre = nombre;
  37.            usuario.Apellido = apellido;
  38.            usuario.NombreLogin = nombreLogin;
  39.            usuario.Password = password;
  40.  
  41.            return Insert(usuario);
  42.        }
  43.  
  44.        public static UsuarioEntity Insert(UsuarioEntity usuario)
  45.        {
  46.  
  47.            string sql = @"INSERT INTO Usuarios (
  48.                           Nombre
  49.                          ,Apellido
  50.                          ,NombreLogin
  51.                          ,Password)
  52.                      VALUES (
  53.                            @Nombre,
  54.                            @Apellido,
  55.                            @NombreLogin,
  56.                            @Password)
  57.                    SELECT SCOPE_IDENTITY()";
  58.  
  59.  
  60.            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
  61.            {
  62.  
  63.                SqlCommand command = new SqlCommand(sql, conn);
  64.                command.Parameters.AddWithValue("Nombre", usuario.Nombre);
  65.                command.Parameters.AddWithValue("Apellido", usuario.Apellido);
  66.                command.Parameters.AddWithValue("NombreLogin", usuario.NombreLogin);
  67.  
  68.                string password = Helper.EncodePassword(string.Concat(usuario.NombreLogin, usuario.Password));
  69.                command.Parameters.AddWithValue("Password", password);
  70.  
  71.                conn.Open();
  72.  
  73.                usuario.Id = Convert.ToInt32(command.ExecuteScalar());
  74.  
  75.                return usuario;
  76.            }
  77.        }
  78.  
  79.  
  80.        internal class Helper
  81.        {
  82.            public static string EncodePassword(string originalPassword)
  83.            {
  84.                MD5 md5 = MD5.Create();
  85.                byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(originalPassword);
  86.                byte[] hash = md5.ComputeHash(inputBytes);
  87.  
  88.                return BitConverter.ToString(hash).Replace("-", "");
  89.            }
  90.        }
  91.  
  92.  
  93.    }


« Última modificación: 1 Diciembre 2010, 04:53 am por evicar » En línea

.::IT::.

Desconectado Desconectado

Mensajes: 167



Ver Perfil
Re: Login Form WinForm c#
« Respuesta #1 en: 1 Diciembre 2010, 05:10 am »

Bueno te falda definir la clase UsuarioEntity. que segun:
Código:
public static UsuarioEntity Insert(UsuarioEntity usuario)

deberia ser :

Código:
Public Class UsuarioEntity
{
       string Nombre {get;set;}
       Apellido {get;set;}
       NombreLogin {get;set;}
       Password {get;set;}
}

Claro que tambien podrias hacerlo declarando variable privadas para cada propiedad.


« Última modificación: 1 Diciembre 2010, 05:14 am por .::IT::. » En línea

Simplemente .::IT::.
evicar

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Login Form WinForm c#
« Respuesta #2 en: 1 Diciembre 2010, 05:35 am »

GRACIAS !!! SOLUCIONADO

Cerrar
En línea

.::IT::.

Desconectado Desconectado

Mensajes: 167



Ver Perfil
Re: Login Form WinForm c#
« Respuesta #3 en: 1 Diciembre 2010, 15:34 pm »

GRACIAS !!! SOLUCIONADO

Cerrar

OK evicar, como recomendación para la seguridad de tu sistema deberías migrar ah Web Services y no conectarte a la base de datos directamente ya que la seguridad esta comprometida de manera irremediable(ya que la contraseña de conexión se encuentra en el programa cliente y .net es fácilmente descompilado), para incrementar un poco mas la seguridad usa el “dotfuscator community edition” y aun así estas vulnerable.

Nota: Si estoy equivocado pro favor corregirme.

Saludos!!!!!!
En línea

Simplemente .::IT::.
Siuto
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.587


Que puedo decir??


Ver Perfil WWW
Re: Login Form WinForm c#
« Respuesta #4 en: 1 Diciembre 2010, 18:04 pm »

Lindo code, andaba buscando algo asi, pero me surge una duda.

Abriendo la SqlConnection dentro del using() en caso de que se produsca SqlException no se va a cerrar la conexión o si?


Comentario offtopic, esto es feo:

Código:
if (count == 0) return false;
else return true;

porque no hacer:

Código:
return count != 0;
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Login Form WinForm c#
« Respuesta #5 en: 3 Diciembre 2010, 06:48 am »

Siuto xD, me agarraste fuera de base,

No me acuerdo si cierra la conexión si hay un exception dentro del using cuando usas SqlConnection.. Uhmmmm,, lo peor es que no tengo tiempo para probar.

Si tienes un rato libre inténtalo y me cuentas :) Sino, intentaré probarlo el fin de semana.

Es que ando demasiado full, son las 12 de la noche y ahora es que tengo tiempo para revisar el foro :(

Un saludo!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con login form « 1 2 »
.NET (C#, VB.NET, ASP)
bitaziko 11 8,948 Último mensaje 11 Octubre 2011, 19:12 pm
por bitaziko
Mostrar error de Login dentro de Form
PHP
KeyPy HH 7 14,624 Último mensaje 24 Septiembre 2012, 06:00 am
por jdc
Comparar dos datagridview c# en winform
.NET (C#, VB.NET, ASP)
maraet 0 4,967 Último mensaje 17 Noviembre 2012, 18:14 pm
por maraet
Ayuda con un Form Login
PHP
luiszr2009 2 2,544 Último mensaje 23 Agosto 2013, 02:05 am
por juaqui
Problema al crear BD al cargar winform C#
.NET (C#, VB.NET, ASP)
CogolloOCB 0 1,814 Último mensaje 7 Abril 2017, 04:30 am
por CogolloOCB
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines