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):

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:

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
🚀 Como Testar no Navegador:

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.