Usuário com melhor resposta
Login com ASP.NET e C#

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á !
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
- Marcado como Resposta Rodrigo de Farias quarta-feira, 26 de setembro de 2012 19:18
-
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
- Marcado como Resposta Rodrigo de Farias quarta-feira, 26 de setembro de 2012 19:20
-
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.
- Marcado como Resposta Rodrigo de Farias quarta-feira, 26 de setembro de 2012 19:20
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
- Marcado como Resposta Rodrigo de Farias quarta-feira, 26 de setembro de 2012 19:18
-
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
- Marcado como Resposta Rodrigo de Farias quarta-feira, 26 de setembro de 2012 19:20
-
-
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.
- Marcado como Resposta Rodrigo de Farias quarta-feira, 26 de setembro de 2012 19:20