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.