Como lidar com sessões e cookies no Express.js?

No Express.js, as sessões e cookies são utilizados para armazenar informações temporárias sobre os usuários, facilitando a autenticação e personalização.

Como lidar com sessões e cookies no Express.js?

Sessões e cookies são recursos essenciais para armazenar dados temporários sobre usuários em aplicações web. No Express.js, podemos gerenciar essas informações utilizando pacotes como express-session e cookie-parser.

1. Instalando as dependências

Antes de começar, instale os pacotes necessários:

npm install express-session cookie-parser dotenv

2. Configurando sessões no Express.js

O pacote express-session permite armazenar informações da sessão do usuário temporariamente no servidor:

const express = require('express');
const session = require('express-session');
require('dotenv').config();

const app = express();
app.use(express.json());

app.use(session({
    secret: process.env.SESSION_SECRET || 'minhaChaveSecreta',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: false } // Defina como 'true' em produção com HTTPS
}));

app.get('/sessao', (req, res) => {
    req.session.usuario = { nome: 'João', autenticado: true };
    res.json({ mensagem: 'Sessão criada', sessao: req.session.usuario });
});

app.get('/ver-sessao', (req, res) => {
    res.json({ sessao: req.session.usuario || 'Nenhuma sessão ativa' });
});

app.listen(3000, () => console.log('Servidor rodando na porta 3000'));

Agora, ao acessar /sessao, será criada uma sessão armazenando os dados do usuário.

3. Utilizando cookies no Express.js

Os cookies são armazenados no navegador do usuário e podem conter informações persistentes:

const cookieParser = require('cookie-parser');
app.use(cookieParser());

app.get('/set-cookie', (req, res) => {
    res.cookie('usuario', 'João', { maxAge: 900000, httpOnly: true });
    res.json({ mensagem: 'Cookie criado' });
});

app.get('/ver-cookie', (req, res) => {
    res.json({ cookie: req.cookies.usuario || 'Nenhum cookie encontrado' });
});

app.get('/remover-cookie', (req, res) => {
    res.clearCookie('usuario');
    res.json({ mensagem: 'Cookie removido' });
});

Conclusão

Sessões e cookies no Express.js são úteis para autenticação, personalização da experiência do usuário e armazenamento temporário de informações. Utilize cookies para dados leves e sessões para dados sensíveis e temporários.

A autenticação baseada em sessões e cookies é amplamente usada em aplicações web tradicionais. Muitos sistemas utilizam sessões para armazenar estados temporários do usuário, enquanto cookies podem ser usados para personalização e persistência de informações.

Plataformas como Facebook e Amazon utilizam cookies para lembrar preferências do usuário, enquanto sistemas bancários costumam usar sessões para garantir que os dados sejam apagados após o logout.

Algumas aplicações:

  • Gerenciamento de autenticação de usuários
  • Armazenamento de preferências do usuário
  • Manutenção de estados temporários
  • Controle de sessões em aplicações bancárias
  • Segurança em transações online

Dicas para quem está começando

  • Use express-session para armazenar sessões de forma eficiente.
  • Habilite cookie-parser para manipular cookies facilmente.
  • Configure httpOnly: true para evitar acesso malicioso aos cookies.
  • Defina um tempo de expiração adequado para os cookies e sessões.
  • Utilize HTTPS em produção para maior segurança dos dados armazenados.

Contribuições de Henrique Almeida

Compartilhe este tutorial: Como lidar com sessões e cookies no Express.js?

Compartilhe este tutorial

Continue aprendendo:

Como usar a biblioteca Multer para upload de arquivos no Node.js?

O Multer é uma biblioteca do Node.js que facilita o upload de arquivos em aplicações Express.js, permitindo armazená-los no servidor.

Tutorial anterior

Como implementar rate limiting em uma API Node.js?

Rate limiting no Express.js limita o número de requisições de um usuário em um determinado período, prevenindo ataques de sobrecarga.

Próximo tutorial