none
RECUPERAR CONTRASEÑA POR CORREO ELECTRÓNICO C# Visual Studio 2017 RRS feed

  • Pregunta

  • Excelente tarde a todos tengo un Login y me gustaría que los usuarios pudieran recuperar su contraseña o cambiarla mediante correo electrónico.

    Datos de la tabla en la base datos para logearse: (Correo_electronico, Contraseña, Tipo_usuario)

    El código del Login es el siguiente:

    _____________________________________________________________________________________________________

    private void Entrar_btn_Click(object sender, EventArgs e)
            {
                string connstring = "Server=127.0.0.1; database=conexionbd; Uid= Mizael; pwd=Mizael1996; ";
                MySqlConnection Conectar = new MySqlConnection(connstring);
                Conectar.Open();
                string query = @"Select * From Conexionbd 
        Where Correo_electronico = @correo and Contraseña = @password";
                MySqlCommand Codigo = new MySqlCommand(query, Conectar);
                Codigo.Parameters.AddWithValue("@correo", Correo_electronico_login.Text);
                Codigo.Parameters.AddWithValue("@password", Contraseña_Login.Text);
                MySqlDataReader leer = Codigo.ExecuteReader();
                if (leer.Read())
                {
                    MessageBox.Show("Inicio de sesión exitoso");
                    switch (leer["Tipo_usuario"].ToString())
                    {
                        case "Nivel 1":
                            Inicio formulario = new Inicio();
                            formulario.Show();
                            formulario.Visible = true;
                            Visible = false;
                            break;
                        case "Nivel 2":
                            Formularios.Nivel_2.Inicio_2 formulario2 = new Formularios.Nivel_2.Inicio_2();
                            formulario2.Show();
                            formulario2.Visible = true;
                            Visible = false;
                            break;
                        case "Nivel 3":
                            Formularios.Nivel_3.Inicio_3 formulario3 = new Formularios.Nivel_3.Inicio_3();
                            formulario3.Show();
                            formulario3.Visible = true;
                            Visible = false;
                            break;
                    }
                    }
                       else
                     {
                      MessageBox.Show("Datos Incorrectos");
                } 
                      Conectar.Close();
            }    

    miércoles, 19 de diciembre de 2018 18:02

Respuestas

  • Buenas,

    Para el tema de enviar la contraseña, te dejo un enlace sobre como enviar un correo electronico desde C#

    Send e-mail via SMTP using C#

    Para el tema de generar una aleatoria, podrías hacer algo como esto:

    public static string RandomString(int length)
    {
        Random random = new Random();
        const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-@";  //Todos los caracteres que quieras añadir
        return new string(Enumerable.Repeat(chars, length)
                  .Select(s => s[random.Next(s.Length)]).ToArray());
    }

    Luego, cuando alguien te pida una nueva contraseña, y tu hayas validado que la petición es correcta (por ejemplo, existe un usuario con ese nombre y ese email), generas una clave nueva con el método que te ha puesto, actualizas la clave de la base de datos, y le envías la nueva clave como se indica en el enlace

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    miércoles, 19 de diciembre de 2018 21:34

Todas las respuestas

  • hola

    >>me gustaría que los usuarios pudieran recuperar su contraseña o cambiarla mediante correo electrónico.

    pero no entiendo, para que pueda realizar esto deberias enviar un mail y proporcionar un link donde acceder para cambiar el password

    pero te desarrollo es web ?

    Sino es web no veo que funcionalidad tendria el mail, ya que debe ejeuctar un .exe en su aplicacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 19 de diciembre de 2018 19:34
  • Leandro excelente Día, no es una aplicación web es una aplicación de escritorio, pero hace tiempo vi como en una aplicación de escritorio desarrollaban un login y si a los usuarios se les olvidaba la contraseña solamente ingresaban en un textbox su correo electronico y lo leía desde la base de datos y les enviaba la contraseña del correo ingresado a su bandeja de entrada, recuerdo que usaban (SmtpClient ServerMail).
    miércoles, 19 de diciembre de 2018 20:35
  • Buenas,

    Pero lo que quieres hacer tu según entiendo, bastaría con que pongas un botón "Recuperar contraseña", en el que pongan su email, y con eso GENERES UNA NUEVA y se la envíes por correo si hay algún usuario que coincida con el mail (o el criterio de comprobación que tengas).

    Digo generar una nueva y enviarla (ademas de actualizar la DB con la nueva) porque entiendo que las contraseñas en tu aplicación están cifradas para que sean seguras. Si están cifradas con un algoritmo digestivo, no puedes leerla de nuevo, solo puede generar una nueva y enviarla.

    Si por el contrario están cifradas con algún algoritmo bidireccional, podrías leerla y enviarla.

    Si no están cifradas.... Piensa mejor en cifrarlas

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    miércoles, 19 de diciembre de 2018 20:53
  • Muchas gracias por tu respuesta, me podrías ayudar a que genere una nueva y la envié al correo electronico tal como dices. 

    miércoles, 19 de diciembre de 2018 21:27
  • Buenas,

    Para el tema de enviar la contraseña, te dejo un enlace sobre como enviar un correo electronico desde C#

    Send e-mail via SMTP using C#

    Para el tema de generar una aleatoria, podrías hacer algo como esto:

    public static string RandomString(int length)
    {
        Random random = new Random();
        const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-@";  //Todos los caracteres que quieras añadir
        return new string(Enumerable.Repeat(chars, length)
                  .Select(s => s[random.Next(s.Length)]).ToArray());
    }

    Luego, cuando alguien te pida una nueva contraseña, y tu hayas validado que la petición es correcta (por ejemplo, existe un usuario con ese nombre y ese email), generas una clave nueva con el método que te ha puesto, actualizas la clave de la base de datos, y le envías la nueva clave como se indica en el enlace

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    miércoles, 19 de diciembre de 2018 21:34
  • ¡Muchas gracias por la ayuda!
    miércoles, 19 de diciembre de 2018 21:40