Jump to content

Login (Validar)


RJ90
 Share

Recommended Posts

Boas!

Estou a completar um sistema para um trabalho de base de dados, juntando as linguagens SQL e C#.

A minha duvida/problema consiste no seguinte.

Que fazer uma validação do tipo:

Se username correcto e password incorrecta, avisa que apenas password esta incorrecto.

Se username incorrecto e password correcta, avisa que apenas username esta incorrecto.

O código que desenvolvi até agora:

private void button1_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();

            string ligacao = "Data Source = RICARDO-PC\\SQLEXPRESS; Database=GestaoGinasio; Integrated Security=True;";
            
            SqlConnection sqlConnection = new SqlConnection(ligacao);
            
            sqlConnection.Open();

            DataTable autenticar = new DataTable("utilizador");
            
            string query = "SELECT username, password FROM users WHERE username='" + textBox1.Text + "' AND password='" + textBox2.Text + "'";
            
            SqlDataAdapter Adaptador1 = new SqlDataAdapter(query, sqlConnection);
            
            Adaptador1.Fill(autenticar);

            if (autenticar.Rows.Count != 1)
            {
                errorProvider1.SetError(textBox1, "Introduza um utilizador válido!");
                errorProvider1.SetError(textBox2, "Introduza uma password válida!");                
            }            
            else
            {
                errorProvider1.Clear();
                Form2 form2 = new Form2();
                form2.Show();
            }

            sqlConnection.Close();
            
        }

http://www.alojaimagens.com/images/5fiat4rd0kzkuyztb.png

Com este método que usei, sinceramente não estou a ver que alterações devo fazer.  🤔

Agradecia ajuda!  👍

EDiT:

Problema resolvido!  😄

private void button1_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();

            string ligacao = "Data Source = RICARDO-PC\\SQLEXPRESS; Database=GestaoGinasio; Integrated Security=True;";
            
            SqlConnection sqlConnection = new SqlConnection(ligacao);
            
            sqlConnection.Open();

            DataTable autenticarusername = new DataTable("utilizador");
            DataTable autenticarpassword = new DataTable("password");
            
            string queryusername = "SELECT username FROM users WHERE username='" + textBox1.Text + "'";
            string querypassword = "SELECT password FROM users WHERE password='" + textBox2.Text + "'";
            SqlDataAdapter Adaptador1 = new SqlDataAdapter(queryusername, sqlConnection);
            SqlDataAdapter Adaptador2 = new SqlDataAdapter(querypassword, sqlConnection);
            
            Adaptador1.Fill(autenticarusername);
            Adaptador2.Fill(autenticarpassword);

            if (autenticarusername.Rows.Count != 1 && autenticarpassword.Rows.Count == 1)
            {
                errorProvider1.SetError(textBox1, "Introduza um utilizador válido!");                                
            }
            else if (autenticarusername.Rows.Count == 1 && autenticarpassword.Rows.Count != 1)
            {
                errorProvider1.SetError(textBox2, "Introduza uma password válida!"); 
            }
            else if (autenticarusername.Rows.Count != 1 || autenticarpassword.Rows.Count != 1)
            {
                errorProvider1.SetError(textBox1, "Introduza um utilizador válido!"); 
                errorProvider1.SetError(textBox2, "Introduza uma password válida!");
            }
            else 
            {
                errorProvider1.Clear();
                Form2 form2 = new Form2();
                form2.Show();
            }

            sqlConnection.Close();            
        }
Link to comment
Share on other sites

Ainda bem que resolveste, mas do ponto de vista de segurança isso pode enfraquecê-la, porque um atacante pode ir tentando usernames até que encontre um válido, e daí apenas tem de descobrir a password. Por outro lado, do ponto de vista de usabilidade, é capaz de ajudar.

Mas só para ficar de nota, suponho que nem sequer seja ponderar isso no caso. 😄

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Sim, têm razão, mas isso são questões que a este nível não fazem sentido, pois não é uma aplicação profissional. Alias, esses pontos nem são avaliados, no entanto, gostei das criticas/sugestões, talvez nas férias, desenvolva para algo mais complexo e profissional.

PS: Neste caso só existe uma conta de utilizador.  👍

Cumprimentos!  😄

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.