ExpressJS - Sessões

HTTP não tem estado; para associar uma solicitação a qualquer outra solicitação, você precisa de uma maneira de armazenar dados do usuário entre as solicitações HTTP. Cookies e parâmetros de URL são maneiras adequadas de transportar dados entre o cliente e o servidor. Mas ambos são legíveis e do lado do cliente. As sessões resolvem exatamente esse problema. Você atribui um ID ao cliente e ele faz todas as solicitações adicionais usando esse ID. As informações associadas ao cliente são armazenadas no servidor vinculado a este ID.

Precisamos da sessão Express , então instale-a usando o código a seguir.

npm install --save express-session

Vamos colocar o session e cookie-parsermiddleware instalado. Neste exemplo, usaremos o armazenamento padrão para armazenar sessões, ou seja, MemoryStore. Nunca use isso em ambientes de produção. O middleware de sessão lida com todas as coisas para nós, ou seja, criar a sessão, definir o cookie de sessão e criar o objeto de sessão emreq objeto.

Sempre que voltarmos a fazer um pedido ao mesmo cliente, teremos as suas informações de sessão armazenadas connosco (visto que o servidor não foi reiniciado). Podemos adicionar mais propriedades ao objeto de sessão. No exemplo a seguir, criaremos um contador de visualizações para um cliente.

var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');

var app = express();

app.use(cookieParser());
app.use(session({secret: "Shh, its a secret!"}));

app.get('/', function(req, res){
   if(req.session.page_views){
      req.session.page_views++;
      res.send("You visited this page " + req.session.page_views + " times");
   } else {
      req.session.page_views = 1;
      res.send("Welcome to this page for the first time!");
   }
});
app.listen(3000);

O que o código acima faz é, quando um usuário visita o site, ele cria uma nova sessão para o usuário e atribui a ele um cookie. Da próxima vez que o usuário vier, o cookie será verificado e opage_view a variável de sessão é atualizada de acordo.

Agora, se você executar o aplicativo e for para localhost:3000, a seguinte saída será exibida.

Se você revisitar a página, o contador de páginas aumentará. A página na captura de tela a seguir foi atualizada 42 vezes.