Trabalhando com Session


por Mauricio Junior em 1/1/2011 0

Olá pessoal, gostaria de falar e mostrar uma nova maneira de trabalhar com Session dentro de um site feito com a plataforma ASP.NET. Muitos sites e sistemas utilizam de forma descentralizada esse tipo de informação. 

O meu objetivo aqui é mostrar que existe uma maneira legal e centralizada para gerar e pegar sessão de um sistema.

Utilizado: ASP.NET, C#.NET, Visual Studio .NET 2010, Session

O primeiro passo é gerar a classe do tipo static e public. Cliquei com o botão direito em cima da pasta Code, selecionei Add e New Item. (Imagem 1)


Imagem 1
Apareceu a tela com todas as opções. Escolhi o tipo Class.cs no template do programa Visual Studio 2010. Digitei o nome de SessaoSistema.cs, em seguida cliquei no botão Add. (Imagem 2)


Imagem 2

Com a classe criada, é bom colocar o public e o static para não haver esquecimento. Isso facilita porque não precisa fazer instância para usar. Todas as sessões do sistema ficarão dentro dessa classe.  (Code 1)

public static class SessaoSistema

{

}

Code 1
O passo seguinte é gerar get e set dos nomes de sessão.  Alguns não precisam de set, só de get. (Code 2)

 

        public static string IPUsuario

        {

            get

            {

                string ip = "";

 

                if (HttpContext.Current.Request.ServerVariables["HTTP_X_CLIENTIP"] != null)

                    ip = HttpContext.Current.Request.ServerVariables["HTTP_X_CLIENTIP"].ToString();

                else

                    ip = Convert.ToString(HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);

 

                return ip;

            }

        }

 

Code 2

No Code 2, criei uma propriedade chamada  IPUsuario apenas com Get, isso porque o aplicativo pega o IP do usuário de forma automática. A próxima propriedade é o nome do usuário que loga na aplicação. (Code 3)

 

        public static string nomeUsuario

        {

            get

            {

                try

                {

                    return Convert.ToString(HttpContext.Current.Session["Session:NomeUsuario"]);

                }

                catch

                {

                    return "";

                }

            }

            set

            {

                HttpContext.Current.Session["Session:NomeUsuario"] = value;

            }

        }

 

Code 3

Essa propriedade Code 3 mostra que dentro do Get existe o try catch porque a sessão pode não existir, no catch o retorno do valor é string vazia. Na parte do Set a sessão recebe o valor atribuído no momento que o usuário entra com usuário e senha, por exemplo:  (Code 4).

private void logar()

{

        //está logado

        SessaoSistema.nomeUsuario = dadoRetorno_NomeUsuario;

}

Code 4

Quando o tipo da variável é número longo, como o ID do usuário logado. Criei uma propriedade do tipo long com get e set. (Code 5)


 

        public static long usuarioID

        {

            get

            {

                try

                {

                    return Convert.ToInt64(HttpContext.Current.Session["Session:usuarioID"]);

                }

                catch

                {

                    return 0;

                }

            }

            set

            {

                HttpContext.Current.Session["Session:usuarioID"] = value;

            }

        }

 

 

Code 5
Note que existe o try e catch dentro do get, no caso de erro retorna o valor zero. No caso da sessão estar zerada, o aplicativo pode enviar o usuário para a tela de login. Sendo do tipo Boolean, você pode colocar o try, catch e no caso de erro, retornar false. 

Sobre o nome colocado dentro do colchete como este [“Session:usuarioID”], depende apenas de você. Você pode colocar qualquer nome que preferir, ou que tenha como padrão na sua empresa e sistemas. Algumas pessoas colocam apenas o nome em vez de colocar o session antes, por exemplo: [“nomeUsuario”]. Não há problema algum neste caso. 

Lembro que na tela de login do sistema, devem ser adicionados os valores retornados de um banco de dados ou de qualquer outra fonte de dados. Fico por aqui e qualquer problema ou dúvida pode entrar em contato.

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Problemas na acentuação
Trabalhando com LinkButton dentro do Gridview
SELECT INSERT
Criando menu dinâmico com C#.NET (Passo 2) - Com diferenciação de usuário
Dica ASP.NET para alerta e nova página
Visual Studio 11 – Novas funcionalidades e melhorias parte 3
HTMLEditorExtender com Imagem
Armazenando dados no ViewState – Parte I
Criando a Tag Cloud em C#
Enviado email anexado
Vídeo - Criando um WebBrowser
Servidor Integrado - Visual Studio.NET
Descobrindo os dias do mês e final de semana
Contagem Regressiva com C# e JavaScript
Criando Números Aleatoriamente
Criando Números Aleatoriamente
Themas - Muito Simples
Vírus / Spam Comentários
PDF Free - Programando para Windows Phone 7
Visual SourceSafe - Série 4
Visual SourceSafe – Série 6
Event Log Parte II - Visual Studio.NET 2005
Usando PopupControlExtender
Envio de e-mail através de formulário web
DateDiff com intervalos escolhidos por você
Vídeo mostrando como validar vários formulários
Dados via Post no VS 2005
II Encontro .NET em Brasília
Virtual Earth - Segundo Passo
Sistema de Login em ASP – Parte IX (Utilizando três camadas)
Gerando uma dll com sistema web
Windows Phone 7, nada como aprender vendo
Microsoft Mobile Explorer 3.0
Visual Studio 11 – Melhorias e inovações parte 5
ASP.MENU com Compatibilidade