O que são Sessions na Web?
Published: 2021-01-17 12:00:08


O Google Analytics é um serviço que utiliza Sessions largamente para fazer analises sobre usuários da internet, sim isso mesmo! o Google monitora as atividades de pessoas como eu e você : ): bem em uma de suas documentações ele descreveu o conceito de Session e eu trago aqui para iniciarmos este estudo:

**"Uma sessão é um grupo de interações do usuário com o seu site que ocorrem em um determinado período."**

*Obs: Session = Sessão, documento original a baixo…*

![Google Analytics](https://dev-to-uploads.s3.amazonaws.com/i/mu7inczwzeltmx48wa2n.PNG)

###Múltiplas Sessions:###
Podem haver + de 1 Session aberta ao mesmo tempo para um mesmo usuário, como no exemplo do Google Analytics acima, para cada sessão aberta há um cookie correspondente no navegador para guardar o ID.

###Não confunda Sessions com Cookies:###
Cookies são persistências temporais de informações guardadas no lado do navegador, já as Sessions são guardadas no lado do servidor e são dependentes de Cookies.

###Uma sessão é normalmente com monitoração de estado:###
Significa que o servidor precisa manter as informações do estado atual e salvar as informações sobre o histórico da sessão para poder se comunicar, e isso é feito através de um cookie HTTP que identifica o estado com um token de ID único. O motivo para usar tokens de sessão é que o cliente só precisa lidar com o identificador, todos os dados da sessão são armazenados no servidor (geralmente em um banco de dados , ao qual o cliente não tem acesso direto).

###Exemplos de utilidades das Sessions:###
1. Exigir que o usuário faça login novamente se a sessão expirou (ou seja, um certo limite de tempo passou sem atividade do usuário). Bem comum em sites de banco, como a Caixa e Banco do Brasil, por questões de segurança.

2. Numa loja virtual, o foco é vender. Visualize o cenário: Um usuário coloca coisas no carrinho e por algum motivo fechou o browser. Quando ele voltar nesse site terá que refazer toda a compra, buscar os produtos e colocá-los no carrinho. Nesse processo o usuário pode ficar impaciente e desistir de comprar. Se o site tivesse recurso de salvar o carrinho e identificar o cliente mesmo que não esteja logado, teria maior chance de concretizar a venda sem aborrecê-lo. Este recurso pode ser implementado com a Session.

3. Lembrar se você prefere camisetas ou meias.

4. Armazenar informações no servidor entre as requisições e respostas HTTP (a cada vez que você atualiza o navegador).

###Stateless -> Stateful:###
Preste atenção ao exemplo 4 acima… Sessions e Cookies fazem o HTTP ser Stateful: O HTTP em si é Stateless ou seja, não exige que o servidor mantenha informações ou estados sobre cada usuário entre as requisições e respostas. Bem para contornar isso há alguns métodos, um deles é através de parâmetros de URL, por exemplo: https://www.youtube.com/results?search_query=programdador+alternativo neste caso search_query recebe um valor = programdador+alternativo que a propósito é o meu canal no YouTube : ) outra forma é utilizar um Cookie sem a Session porém perceba que nestes 2 casos as informações estariam expostas ao usuário, sujeitas a leitura e edição portanto se deseja proteger essas informações seria mais seguro utilizar Session pois esta fica armazenada no servidor.