Implementa autenticação simples usando o JSON Server como repositório de usuários. Após o login, os dados da sessão são armazenados no sessionStorage — que persiste durante a sessão do navegador mas é apagado ao fechar a aba. A página protegida redireciona para o login se não houver sessão ativa.
O formulário chama loginUser(login, senha).
GET /api/usuarios retorna todos os usuários.
O código compara login e senha localmente.
Se o usuário for encontrado, seus dados são salvos em
sessionStorage.setItem('usuarioCorrente', JSON.stringify(user)).
window.location.href = INDEX_URL leva o usuário autenticado.
Qualquer página protegida verifica usuarioCorrente.login ao carregar.
sessionStorage vs localStorage
sessionStorage: dura enquanto a aba está aberta.
localStorage: persiste indefinidamente.
Para sessões de login, sessionStorage é mais seguro.
Proteção de rota
O script de verificação é carregado com <script src="login.js">
antes do <body>, garantindo o redirecionamento antes de qualquer
conteúdo ser exibido.
⚠️ Atenção: segurança
Esta implementação é educacional. Em produção, a senha nunca deve ser comparada no cliente — use autenticação no servidor com hash (bcrypt) e JWT.
UUID para novos usuários
Novos usuários cadastrados recebem um ID único gerado com
crypto.randomUUID(), evitando conflitos de ID com o JSON Server.
Endpoint: GET /api/usuarios
[
{ "id": 1, "nome": "Admin", "login": "admin", "senha": "admin123", "email": "admin@diw.com", "perfil": "admin" },
{ "id": 2, "nome": "Rommel Carneiro", "login": "prof", "senha": "prof123", "email": "rommel@pucminas.br", "perfil": "professor" },
{ "id": 3, "nome": "Aluno Teste", "login": "aluno", "senha": "aluno123", "email": "aluno@aluno.com", "perfil": "aluno" }
]
setTimeout.sessionStorage por localStorage e observe a diferença de comportamento.