none
Login com ASP.NET e C# RRS feed

  • Pergunta

  • Olá pessoal, como podem ver no código abaixo estou fazendo um WebForm com login e senha.

    Fiz um SELECT no Banco de Dados para saber se o usuário consta no registro e retornar na página o nome do usuário,

    usei o SqlDataReader para verificar a existência do usuário no DB, esta tudo funcionando perfeitamente, agora minha dúvida é ... é certo usar o DataReader para fazer essa verificação, ou existe uma maneira mais eficaz e segura para se fazer?

     protected void Button1_Click(object sender, EventArgs e)
            {
                Literal Lt = new Literal();
                try
                {
                    using (SqlConnection cn = new SqlConnection())
                    {
                        cn.ConnectionString = Properties.Settings.Default.CN;
                        cn.Open();
                        //
                        SqlCommand cmd = new SqlCommand();
                        cmd.CommandText = "SELECT USUARIO FROM USUARIO WHERE USUARIO = '"+ txtUsuario.Text.Trim() +"' AND SENHA = '" + txtSenha.Text.Trim() + "'";
                        cmd.Connection = cn;
                        //
                        SqlDataReader DR;
                        DR = cmd.ExecuteReader();
                        //
                        if (DR.Read() == true)
                        {
                            Session.Add("Login", DR[0].ToString());
                            Lt.Text = "<p style='color:#0000CC'>Usuario " + Session["Login"].ToString() + "</p>";
                            LimpaCampo();
                        }
                        else
                        {
                            
                            Lt.Text = "<p style='color:#FC0000;'>Usuario ou senha incorretos.</p>";
                            
                        }
                    }
                    PlaceHolder1.Controls.Add(Lt);
                    
                }
                catch (Exception ex)
                {
                    //Lt.Text = "Erro: " + ex.Message;
                    Response.Write("Erro " + ex.Message);
                }
            }

    Quem puder ajudar agradeço desde já !

    quarta-feira, 26 de setembro de 2012 12:50

Respostas

  • E ae tuco, blz cara?

    Cara, como você está recuperando o usuário e guardando o usuário não tem problema.

    Veja a diferença entre ExecuteReader e os outros.

    http://cbsa.com.br/post/diferencas-entre-executereader-executenonquery-executescalar-quando-usar-e-qual-usar.aspx


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS

    quarta-feira, 26 de setembro de 2012 13:25
  • Vc pode fazer como está ai sem nenhumm problema, eu particularmente acho melhor criar uma classe que herda da membershipprovider e colocar a validação de senha nela pq aproveito as facilidades da classe como tb não preciso obrigatoriamente criar uma sessao e  testar em cada load da página a existencia da sessao verifico simplesmente se a página foi autenticada.

    Junior

    quarta-feira, 26 de setembro de 2012 13:26
  • Para esse tipo de caso acho que não tem nenhum problema até porque a leitura de dados do DataReader é feita sempre pra frente, você ganha mais desempenho do que usando um DataSet, não sei dizer se chega a ser um grande ganho.

    Aqui tem mais informações:

    http://www.macoratti.net/adon_dsr.htm

    Agora uma coisa que vale a pena dar uma pesquisada é no Entity Framework, te abre possibilidade de usar expressões lambdas e as facilidades do LINQ.

    quarta-feira, 26 de setembro de 2012 16:19

Todas as Respostas

  • E ae tuco, blz cara?

    Cara, como você está recuperando o usuário e guardando o usuário não tem problema.

    Veja a diferença entre ExecuteReader e os outros.

    http://cbsa.com.br/post/diferencas-entre-executereader-executenonquery-executescalar-quando-usar-e-qual-usar.aspx


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS

    quarta-feira, 26 de setembro de 2012 13:25
  • Vc pode fazer como está ai sem nenhumm problema, eu particularmente acho melhor criar uma classe que herda da membershipprovider e colocar a validação de senha nela pq aproveito as facilidades da classe como tb não preciso obrigatoriamente criar uma sessao e  testar em cada load da página a existencia da sessao verifico simplesmente se a página foi autenticada.

    Junior

    quarta-feira, 26 de setembro de 2012 13:26
  • não conheço a classe membershipprovider, estou iniciando em C# mas obrigado pela opinião sobre o código! 
    quarta-feira, 26 de setembro de 2012 14:02
  • Para esse tipo de caso acho que não tem nenhum problema até porque a leitura de dados do DataReader é feita sempre pra frente, você ganha mais desempenho do que usando um DataSet, não sei dizer se chega a ser um grande ganho.

    Aqui tem mais informações:

    http://www.macoratti.net/adon_dsr.htm

    Agora uma coisa que vale a pena dar uma pesquisada é no Entity Framework, te abre possibilidade de usar expressões lambdas e as facilidades do LINQ.

    quarta-feira, 26 de setembro de 2012 16:19