Usuário com melhor resposta
login+session

Pergunta
-
Pessoal estou desenvolvendo um portal, seria assim o usuario loga , a session se encarrega de guardar seu id , nisso carregar so os objetos do mesmo.
veja se estou no caminho:public class Autentica : Dados { public Autentica(string txtUser, string txtSenha) { Objcmd = new SqlCommand(); Objcmd.CommandType = CommandType.StoredProcedure; Objcmd.CommandText = "AUTENTICA"; Objcmd.Connection = CN; Objcmd.Parameters.AddWithValue("@USUARIO", txtUser); Objcmd.Parameters.AddWithValue("@SENHA", txtSenha); SqlDataReader DR = null; DR = Objcmd.ExecuteReader(); aqui tem como por meio do datareader eu consegue armazenar o id na memoria , e pegar ele na pagina default usando uma session? DR.Close(); DR = null; Objcmd.Dispose(); CN.Close(); CN.Dispose(); }
Sao tantas duvidas aproveitando , e uma boa pratica eu criar um classe Dados (SqlConnection,SqlDataReader,DataSetSqlDataAdapter,SqlCommand,SqlParameter+Metodos(PESQUISA,INCLUSAO,DELETAR e etc..) ), e uma classe chamada PropriedadeDados (Get/Set os campos que vou utilizar do meu banco de dados).vlw pessoal obrigado desde ja.
- Editado Rodrigo Schwinn sexta-feira, 30 de setembro de 2011 17:39
Respostas
-
Quanto a 1ª questão de guardar o usuário numa Session seria bem simples você implementar isso...
Você teria de adicionar o código abaixo logo após você carregar o DataReader com o ExecuteReader do Command:
if(DR.Read())
{
Session.Add("IdUsuario", DR["ID_USUARIO"]);
}Ou seja, ele criaria uma sessão do "IdUsuario" o valor "ID_USUARIO" do DataReader ou seja la qual foi o nome do campo que você retorna da query...
E para recuperar o valor dessa session posteriormente você teria de checar o valor da mesma... Session["Idusuario"]
Segue uns links com alguns exemplos básicos..http://www.juliobattisti.com.br/tutoriais/mauricioborges/trabalhandocomsession001.asp
http://www.codigofonte.net/dicas/csharp/80_trabalhando-com-session-em-c- Marcado como Resposta Eder CostaModerator quinta-feira, 17 de novembro de 2011 13:41
-
Rodrigo,
Na minha opinião, seria mais interessante guardar o ID ou o Username do usuário no cookie de autenticação do aspnet. Geralmente é bom evitar usar session devido aos problemas que ela traz caso você queira distribuir a sua aplicação em mais de um servidor, por exemplo.
Para armazenar no cookie é muito simples, basta você usar o método FormsAuthentication.SetAuthCookie(string username, bool createPersistantCookie)
Se você passar true no segundo parâmetro, a pessoa continuará logada mesmo se fechar o browser, passando false, ao fechar o browser não ficará mais logada (o cookie será deletado).
Depois, para recuperar o username ou o ID, usa o seguinte código nas páginas: User.Identity.Name
[]s
- Sugerido como Resposta Henrique Avila terça-feira, 25 de outubro de 2011 16:34
- Marcado como Resposta Eder CostaModerator quinta-feira, 17 de novembro de 2011 13:41
-
Bom dia Rodrigo,
Cara aplicações que exigem login é bom e rápido você usar FormsAuthentication, não só para cookies, mas ele se encarrega de toda essa parte que você teria que gerenciar na "mão" como session, cookies, etc... é bem simples de usar, apenas com algumas configurações no web.config e algumas linhas de código.
Da uma olhada no Post abaixo, que contém uma explicação mais detalhada sobre FormsAuthentication e contém para download uma aplicação usando FormsAuthentication:
Espero que o post te ajude...
Caso alguma das respostas tenha lhe ajudado, marque o post como resolvido...
Att, Lucas Pfeiffer - http://muitomaisque.net- Marcado como Resposta Eder CostaModerator quinta-feira, 17 de novembro de 2011 13:41
Todas as Respostas
-
Quanto a 1ª questão de guardar o usuário numa Session seria bem simples você implementar isso...
Você teria de adicionar o código abaixo logo após você carregar o DataReader com o ExecuteReader do Command:
if(DR.Read())
{
Session.Add("IdUsuario", DR["ID_USUARIO"]);
}Ou seja, ele criaria uma sessão do "IdUsuario" o valor "ID_USUARIO" do DataReader ou seja la qual foi o nome do campo que você retorna da query...
E para recuperar o valor dessa session posteriormente você teria de checar o valor da mesma... Session["Idusuario"]
Segue uns links com alguns exemplos básicos..http://www.juliobattisti.com.br/tutoriais/mauricioborges/trabalhandocomsession001.asp
http://www.codigofonte.net/dicas/csharp/80_trabalhando-com-session-em-c- Marcado como Resposta Eder CostaModerator quinta-feira, 17 de novembro de 2011 13:41
-
Guilherme, so lhe complementando.
Seria interessante ao inves de guardar somente o id, criar uma classe ou estrutura do usuario e carrega-la na session, pois assim economizaria idas no banco para buscar mais informações relacionada ao usuario.
-
Rodrigo,
Na minha opinião, seria mais interessante guardar o ID ou o Username do usuário no cookie de autenticação do aspnet. Geralmente é bom evitar usar session devido aos problemas que ela traz caso você queira distribuir a sua aplicação em mais de um servidor, por exemplo.
Para armazenar no cookie é muito simples, basta você usar o método FormsAuthentication.SetAuthCookie(string username, bool createPersistantCookie)
Se você passar true no segundo parâmetro, a pessoa continuará logada mesmo se fechar o browser, passando false, ao fechar o browser não ficará mais logada (o cookie será deletado).
Depois, para recuperar o username ou o ID, usa o seguinte código nas páginas: User.Identity.Name
[]s
- Sugerido como Resposta Henrique Avila terça-feira, 25 de outubro de 2011 16:34
- Marcado como Resposta Eder CostaModerator quinta-feira, 17 de novembro de 2011 13:41
-
Bom dia Rodrigo,
Cara aplicações que exigem login é bom e rápido você usar FormsAuthentication, não só para cookies, mas ele se encarrega de toda essa parte que você teria que gerenciar na "mão" como session, cookies, etc... é bem simples de usar, apenas com algumas configurações no web.config e algumas linhas de código.
Da uma olhada no Post abaixo, que contém uma explicação mais detalhada sobre FormsAuthentication e contém para download uma aplicação usando FormsAuthentication:
Espero que o post te ajude...
Caso alguma das respostas tenha lhe ajudado, marque o post como resolvido...
Att, Lucas Pfeiffer - http://muitomaisque.net- Marcado como Resposta Eder CostaModerator quinta-feira, 17 de novembro de 2011 13:41