Documentação do Sistema de Autenticação
Especificação técnica detalhada para implementação e execução do projeto de login seguro com Node.js, JWT e Front-end desacoplado.
Propósito
Este sistema implementa autenticação baseada em Tokens JWT (JSON Web Tokens), impedindo o acesso não autorizado a telas e rotas de dados sensíveis. O conteúdo protegido só é liberado mediante validação prévia no servidor.
Arquitetura do Sistema
A aplicação segue o padrão de arquitetura desacoplada (Decoupled/Client-Server):
- Back-end (Node.js + Express): Atua como API RESTful responsável pela autenticação, hash de senhas e assinatura dos tokens.
- Front-end (HTML5 / JS Puro): Interface de usuário independente que consome a API via requisições assíncronas
fetch(). - Servidor Web local (Python): Provê os arquivos estáticos (HTML/CSS/JS) no ambiente de testes.
Instalação e Dependências
Abra o terminal no Linux e execute os comandos abaixo na pasta do projeto:
# 1. Inicializar o gerenciador de pacotes
npm init -y
# 2. Instalar dependências de produção
npm install express bcryptjs jsonwebtoken cors dotenv
Resumo das Bibliotecas:
express: Framework web para criação das rotas.bcryptjs: Criptografia de senhas usando algoritmo Hash.jsonwebtoken: Criação e verificação de Tokens JWT.cors: Liberação do compartilhamento de recursos entre domínios.dotenv: Gerenciamento de variáveis de ambiente.
Configuração de Variáveis (.env)
Crie o arquivo de ambiente oculto no Linux:
nano .env
Insira as chaves de configuração abaixo:
PORT=3000
JWT_SECRET=chave_secreta_super_segura_para_producao_12345
FRONTEND_URL=http://localhost:8000
Endpoints da API
POST /api/login
Autentica o usuário e retorna o Token de Acesso.
Corpo da Requisição (JSON):
{
"email": "usuario@email.com",
"senha": "123"
}
Resposta de Sucesso (200 OK):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
GET /api/dashboard
Rota protegida. Requer envio do Token no cabeçalho HTTP Authorization.
Cabeçalho Requerido:
Authorization: Bearer
Execução do Servidor Back-end
Para iniciar o servidor de API Node.js:
# Execução direta
node server.js
# Ou usando nodemon (com auto-reload)
npx nodemon server.js
O servidor iniciará em: http://localhost:3000
Servidor de Teste Front-end (Python local)
Para servir os arquivos estáticos (login.html e dashboard.html) via HTTP no Linux sem precisar instalar o Nginx ou Apache durante o desenvolvimento:
1. Abra um novo terminal e navegue até a pasta onde estão os arquivos HTML.
2. Execute o servidor nativo HTTP do Python 3:
python3 -m http.server 8000
Após subir o Python, acesse no seu navegador: http://localhost:8000/login.html
Dica: Teste de Acesso Direto Protegido
Se você tentar acessar http://localhost:8000/dashboard.html diretamente sem ter feito login prévio, a script do Front-end identificará a ausência do Token e redirecionará a sessão de volta para a tela de login imediatamente.