Desenvolvimento - ASP. NET
Gerenciando estado com Sessão
Veremos neste artigo as principais funções do objeto Session.
por Leandro BraçarotoEm nossas aplicações quase sempre é necessário manter o estado de objetos mesmo depois do envio para o servidor. Muitas vezes essas informações que desejamos guardar são pertinentes apenas para a página atual, ou seja, quando desejamos guardar as informações de objetos em uma mesma página e não na aplicação toda.
E é nesse momento que precisamos decidir qual objeto devemos utilizar para ter o resultado que esperamos. Neste artigo abordaremos as funcionalidades do objeto Sessão ou Session.
Funcionamento da Sessão
A sessão é muito usada nas aplicações para controlar acesso, tipo ou qualquer outra coisa, nos permitindo manter o estado dos dados no nível do usuário, ou seja, enquanto o usuário estiver conectado na aplicação, ele compartilha de uma mesma sessão até o fim de sua visita ou se houver TimeOut da sessão (tempo configurado para expirar a sessão caso o sistema fique ocioso). A sessão é criada pelo browser, isto é, cada vez que abro meu navegador é aberta uma sessão para controle, e também a cada inicio de uma aplicação usando .net é aberta uma sessão para o usuário.
O objeto Session armazena os dados temporariamente para cada visitante que acessa a aplicação, ou seja, toda a vez que um visitante abre uma página ASP.NET, ela verifica se o visitante já possui um objeto Session, caso não exista é criado.
A sessão em uma aplicação é determinada ou controlada por um tempo, com isso o ASP.NET "reinicia" o tempo de vida toda vez que o usuário requisita uma página, lembrando que ele "destrói" este objeto apenas depois de um período de ociosidade da aplicação - por padrão: 20 minutos (mas pode ser alterado de acordo com a necessidade), ou seja, se o usuário se autenticar em uma aplicação e ficar 20 minutos parado e depois continuar o acesso; a aplicação irá pedir para que o usuário se autentique novamente.
Colocando em prática
Para demonstrarmos que trabalhar com sessão é bem simples e fácil, segue abaixo como criar uma sessão:
VB.Net:
Session("Clicks") = "valor"
C#:
Session["Clicks"] = "valor";
Em uma aplicação, podemos criar qualquer tipo de sessão, e quantas precisarmos.
Nota: O uso exagerado do objeto Session compromete o desempenho de nossa aplicação, pois ele fica armazenado na memória do servidor em que a hospeda.
Para ler uma sessão basta fazer a seguinte forma:
VB.Net:
Response.Write(Session("Clicks"))
C#:
Response.Write(Session["Clicks"].ToString());
Abaixo, a Listagem 01 nos mostra como exemplo, uma rotina para armazenar credenciais do usuário depois que ele se autenticou na aplicação:
Claramente que neste exemplo foi apenas para efeito de demonstração, não sendo implementado nenhum tipo de segurança.
Na Listagem 02, temos um exemplo de como barrar o acesso dos usuários não autenticados a uma determinada página:
Note que a comparação é feita na sessão "loginUser", caso ela seja vazia significa que não foi criada na página de autenticação, com isso o usuário será redirecionado para a página de entrada. Também poderíamos exibir uma mensagem: "Você não tem acesso à esta página", por exemplo.
Duração da Sessão
Como já foi dito, a sessão por padrão é de 20 minutos, mas para alterarmos este tempo precisamos entrar no Web.config da aplicação e fazermos a seguinte inclusão como demonstrado na Listagem 03.
Removendo a Sessão
É muito importante ao trabalhar em uma aplicação onde o usuário deve-se autenticar para ter acesso, criar um botão também para ele deslogar.
Para que seja eliminada todas as sessões criadas pelo usuário, basta fazer da seguinte forma:
Session.Abandon()
Caso seja necessário eliminar uma sessão expecífica, faça-se assim:
Finalizando
Vimos neste artigo as principais funções do objeto Session, ele que tem uma importância extrema em nossas aplicações, nos ajudando muito a gerenciar as informações necessárias. Mas devemos nos atentar para o uso em excesso - como dito acima - que pode deixar nossas aplicações com um desempenho menor.
Abraços pessoal, até o próximo.
E é nesse momento que precisamos decidir qual objeto devemos utilizar para ter o resultado que esperamos. Neste artigo abordaremos as funcionalidades do objeto Sessão ou Session.
Funcionamento da Sessão
A sessão é muito usada nas aplicações para controlar acesso, tipo ou qualquer outra coisa, nos permitindo manter o estado dos dados no nível do usuário, ou seja, enquanto o usuário estiver conectado na aplicação, ele compartilha de uma mesma sessão até o fim de sua visita ou se houver TimeOut da sessão (tempo configurado para expirar a sessão caso o sistema fique ocioso). A sessão é criada pelo browser, isto é, cada vez que abro meu navegador é aberta uma sessão para controle, e também a cada inicio de uma aplicação usando .net é aberta uma sessão para o usuário.
O objeto Session armazena os dados temporariamente para cada visitante que acessa a aplicação, ou seja, toda a vez que um visitante abre uma página ASP.NET, ela verifica se o visitante já possui um objeto Session, caso não exista é criado.
A sessão em uma aplicação é determinada ou controlada por um tempo, com isso o ASP.NET "reinicia" o tempo de vida toda vez que o usuário requisita uma página, lembrando que ele "destrói" este objeto apenas depois de um período de ociosidade da aplicação - por padrão: 20 minutos (mas pode ser alterado de acordo com a necessidade), ou seja, se o usuário se autenticar em uma aplicação e ficar 20 minutos parado e depois continuar o acesso; a aplicação irá pedir para que o usuário se autentique novamente.
Colocando em prática
Para demonstrarmos que trabalhar com sessão é bem simples e fácil, segue abaixo como criar uma sessão:
VB.Net:
Session("Clicks") = "valor"
C#:
Session["Clicks"] = "valor";
Em uma aplicação, podemos criar qualquer tipo de sessão, e quantas precisarmos.
Nota: O uso exagerado do objeto Session compromete o desempenho de nossa aplicação, pois ele fica armazenado na memória do servidor em que a hospeda.
Para ler uma sessão basta fazer a seguinte forma:
VB.Net:
Response.Write(Session("Clicks"))
C#:
Response.Write(Session["Clicks"].ToString());
Abaixo, a Listagem 01 nos mostra como exemplo, uma rotina para armazenar credenciais do usuário depois que ele se autenticou na aplicação:
VB.Net: Protected Sub ButtonAutentica_Click(ByVal sender As Object, ByVal e As EventArgs) Try If Me.TextBoxLogin.Text = "Leandro Braçaroto" And Me.TextBoxSenha.Text = "1234" Then Session("sessionUser") = Me.TextBoxLogin.Text Session("sessionPassword") = Me.TextBoxSenha.Text End If Catch ex As Exception Response.Write(ex.Message) End Try End Sub C#: protected void ButtonAutentica_Click(object sender, EventArgs e) { try { if (this.TextBoxLogin.Text == "Leandro Braçaroto" & this.TextBoxSenha.Text == "1234") { Session("sessionUser") = this.TextBoxLogin.Text; Session("sessionPassword") = this.TextBoxSenha.Text; } } catch (Exception ex) { Response.Write(ex.Message); } } Listagem 01 - Autenticando usuário
Claramente que neste exemplo foi apenas para efeito de demonstração, não sendo implementado nenhum tipo de segurança.
Na Listagem 02, temos um exemplo de como barrar o acesso dos usuários não autenticados a uma determinada página:
VB.Net: If Session("loginUser") = "" Then Response.Redirect("default.aspx") End If C#: if (Session("loginUser") == "") { Response.Redirect("default.aspx"); } Listagem 02 - Barrando acesso de usuários não autenticados
Note que a comparação é feita na sessão "loginUser", caso ela seja vazia significa que não foi criada na página de autenticação, com isso o usuário será redirecionado para a página de entrada. Também poderíamos exibir uma mensagem: "Você não tem acesso à esta página", por exemplo.
Duração da Sessão
Como já foi dito, a sessão por padrão é de 20 minutos, mas para alterarmos este tempo precisamos entrar no Web.config da aplicação e fazermos a seguinte inclusão como demonstrado na Listagem 03.
<configuration> <system.web> <sessionState timeout="10" /> </system.web> </configuration> Listagem 03 - Alterando a duração da sessão
Removendo a Sessão
É muito importante ao trabalhar em uma aplicação onde o usuário deve-se autenticar para ter acesso, criar um botão também para ele deslogar.
Para que seja eliminada todas as sessões criadas pelo usuário, basta fazer da seguinte forma:
Session.Abandon()
Caso seja necessário eliminar uma sessão expecífica, faça-se assim:
VB.Net: Session.Remove("sessionUser ") ou Session("sessionUser ") = nothing C#: Session.Remove("sessionUser "); ou Session("sessionUser ") = null;
Finalizando
Vimos neste artigo as principais funções do objeto Session, ele que tem uma importância extrema em nossas aplicações, nos ajudando muito a gerenciar as informações necessárias. Mas devemos nos atentar para o uso em excesso - como dito acima - que pode deixar nossas aplicações com um desempenho menor.
Abraços pessoal, até o próximo.