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.htmlme paresio bastante interesante.. pero al momento de llevarlo a mi aplicacio tengo probblemas con UsuarioEntity:
genere una clase llamada :
class LoginService
{
public static bool Autenticar(string usuario, string password)
{
string sql = @"SELECT COUNT(*)
FROM Usuarios
WHERE NombreLogin = @nombre AND Password = @password";
using (SqlConnection conn
= new SqlConnection
("Data Source=ENZZO-PC\\SQLEXPRESS;Initial Catalog=ISW;Integrated Security=True")) {
conn.Open();
SqlCommand command
= new SqlCommand
(sql, conn
); command.Parameters.AddWithValue("@nombre", usuario);
string hash = Helper.EncodePassword(string.Concat(usuario, password));
command.Parameters.AddWithValue("@password", hash);
int count = Convert.ToInt32(command.ExecuteScalar());
if (count == 0)
return false;
else
return true;
}
}
public static UsuarioEntity Insert(string nombre, string apellido, string nombreLogin, string password)
{
UsuarioEntity usuario
= new UsuarioEntity
();
usuario.Nombre = nombre;
usuario.Apellido = apellido;
usuario.NombreLogin = nombreLogin;
usuario.Password = password;
return Insert(usuario);
}
public static UsuarioEntity Insert(UsuarioEntity usuario)
{
string sql = @"INSERT INTO Usuarios (
Nombre
,Apellido
,NombreLogin
,Password)
VALUES (
@Nombre,
@Apellido,
@NombreLogin,
@Password)
SELECT SCOPE_IDENTITY()";
using (SqlConnection conn
= new SqlConnection
(ConfigurationManager
.ConnectionStrings["default"].ToString())) {
SqlCommand command
= new SqlCommand
(sql, conn
); command.Parameters.AddWithValue("Nombre", usuario.Nombre);
command.Parameters.AddWithValue("Apellido", usuario.Apellido);
command.Parameters.AddWithValue("NombreLogin", usuario.NombreLogin);
string password = Helper.EncodePassword(string.Concat(usuario.NombreLogin, usuario.Password));
command.Parameters.AddWithValue("Password", password);
conn.Open();
usuario.Id = Convert.ToInt32(command.ExecuteScalar());
return usuario;
}
}
internal class Helper
{
public static string EncodePassword(string originalPassword)
{
MD5 md5 = MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(originalPassword);
byte[] hash = md5.ComputeHash(inputBytes);
return BitConverter.ToString(hash).Replace("-", "");
}
}
}