none
UPDATE A PASSWORD YA GUARDADO CON HASH SHA1 RRS feed

  • Pregunta

  • Que tal a todos he implementado este método en mi aplicación uso c# y asp.net.

    El método lo seguí conforme a estas dos publicaciones:

    https://social.msdn.microsoft.com/Forums/es-ES/61073fb6-de1a-4bce-bca4-dbd86a3fff9b/faq-login-usando-password-con-hash?forum=netfxwebes#0287468e-bc44-4aa9-a5b1-455e099f8a6f

    http://ltuttini.blogspot.com/2010/05/login-usando-password-con-hash.html

    Ya funciona a la perfección todo, pero ahora lo que no puedo con ello y ya llevo rato tratando de implementar es el update a la tabla y que contenga el hash.

    Tengo una clase llamada Login.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web.Security;
    using System.Configuration;
    using System.Text;
    
    
    namespace DataAccess
    {
        public static 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(ConfigurationManager.ConnectionStrings["ConsultaConnectionString"].ToString()))
                {
                    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, int Idequipo, int Idacceso, int Idcliente)
            {
                UsuarioEntity usuario = new UsuarioEntity();
    
                usuario.Nombre = nombre;
                usuario.Apellido = apellido;
                usuario.NombreLogin = nombreLogin;
                usuario.Password = password;
                usuario.Idequipo = Idequipo;
                usuario.Idacceso = Idacceso;
                usuario.Idcliente = Idcliente;
    
                return Insert(usuario);
            }
    
            public static UsuarioEntity Insert(UsuarioEntity usuario)
            {
    
                string sql = @"INSERT INTO usuarios (
                                       Nombre
                                      ,Apellido
                                      ,NombreLogin
                                      ,Password
                                      ,Idequipo
                                      ,Idacceso
                                      ,Idcliente)
                                  VALUES (
                                        @Nombre, 
                                        @Apellido, 
                                        @NombreLogin,
                                        @Password,
                                        @Idequipo,
                                        @Idacceso,
                                        @Idcliente)
                                SELECT SCOPE_IDENTITY()";
    
    
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConsultaConnectionString"].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);
    
                    command.Parameters.AddWithValue("Idequipo", usuario.Idequipo);
                    command.Parameters.AddWithValue("Idacceso", usuario.Idacceso);
                    command.Parameters.AddWithValue("Idcliente", usuario.Idcliente);
    
    
                    conn.Open();
    
                    usuario.Id = Convert.ToInt32(command.ExecuteScalar());
    
                    return usuario;
                }
            }
    
    
            public static DataTable prConsultaUsuario(string usuario, string password)
            {
                string sql = @"SELECT Nombre, IdUsuario, Idequipo, Idacceso
                                FROM usuarios
                                WHERE NombreLogin = @NombreLogin AND Password = @Password";
    
    
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConsultaConnectionString"].ToString()))
                {
                    SqlCommand command = new SqlCommand(sql, conn);
    
                    command.Parameters.AddWithValue("@NombreLogin", usuario);
                    string hash = Helper.EncodePassword(string.Concat(usuario, password));
                    command.Parameters.AddWithValue("@Password", hash);
    
    
    
                    conn.Open();
                    SqlDataAdapter daAdaptador = new SqlDataAdapter(command);
                    DataTable dtDatos = new DataTable();
                    daAdaptador.Fill(dtDatos);
                    return dtDatos;
                }
            }
          
        }
    }
    

    De antemano muchas gracias.


    Hugo Damian

    viernes, 19 de abril de 2019 5:55

Respuestas

  • Hola Hugo Damian:

    Ya sabes engancharte a la base de datos, ya sabes generar un hash.

    Solo tienes que hacer una sentencia "Update usuarios set Password = @password where nombreUsuario = @nombreLogin;" o "Update usuarios set Password = @Password where idUsuario = @idUsuario;".

    Como supongo que nombreLogin será único, valdrá de cualquiera de las dos formas.

    Luego ejecutas mediante command.ExecuteNonQuery() y ya la tienes.

    Update Ado.Net

    http://elguille.info/net/adonet/sql_instrucciones_update.aspx

    viernes, 19 de abril de 2019 6:40

Todas las respuestas

  • Hola Hugo Damian:

    Ya sabes engancharte a la base de datos, ya sabes generar un hash.

    Solo tienes que hacer una sentencia "Update usuarios set Password = @password where nombreUsuario = @nombreLogin;" o "Update usuarios set Password = @Password where idUsuario = @idUsuario;".

    Como supongo que nombreLogin será único, valdrá de cualquiera de las dos formas.

    Luego ejecutas mediante command.ExecuteNonQuery() y ya la tienes.

    Update Ado.Net

    http://elguille.info/net/adonet/sql_instrucciones_update.aspx

    viernes, 19 de abril de 2019 6:40
  • Gracias por responder, ya intente seguir la liga que me diste Sergio, complemente lo que sabia del update con el hash, gracias a esa liga que me diste me he dado otra idea y ya me quedo de antemano muchas gracias.


    Hugo Damian

    viernes, 19 de abril de 2019 19:55