Este projeto implementa um sistema de autenticação de usuários utilizando JSON Web Tokens (JWT). O backend é desenvolvido com Django e Django REST Framework, enquanto o frontend é construído com Angular. Ele demonstra o fluxo completo de registro de usuário, login, logout e proteção de rotas/recursos baseada em autenticação.
-
Backend (Django):
- Registro de novos usuários.
- Login de usuários com credenciais (email/username e senha).
- Geração de tokens JWT (access token e refresh token) após login bem-sucedido.
- Validação de access tokens para acesso a endpoints protegidos.
- Mecanismo para refresh de access tokens utilizando o refresh token.
- Logout (invalidando o refresh token, por exemplo, adicionando-o a uma blacklist).
- Endpoints protegidos que só podem ser acessados por usuários autenticados.
-
Frontend (Angular):
- Formulário de registro de usuário.
- Formulário de login.
- Armazenamento seguro dos tokens JWT (ex: em
localStorage). - Inclusão automática do access token no cabeçalho
Authorizationdas requisições para endpoints protegidos (usandoHttpInterceptor). - Funcionalidade de logout, limpando os tokens armazenados e redirecionando o usuário.
Siga os passos abaixo para configurar e executar o projeto localmente.
-
Instale as dependências:
pip install -r requirements.txt
-
Aplique as migrações do banco de dados:
python manage.py migrate
-
Crie um superusuário (opcional, para acesso ao Django Admin):
python manage.py createsuperuser
-
Inicie o servidor de desenvolvimento do Django:
python manage.py runserver
Por padrão, o backend estará rodando em
http://127.0.0.1:8000/.
-
Instale as dependências:
npm install # ou yarn install -
Inicie o servidor de desenvolvimento do Angular:
ng serve # ou npm startPor padrão, o frontend estará rodando em
http://localhost:4200/.
- Inicie o servidor backend Django.
- Inicie o servidor frontend Angular.
- Abra seu navegador e acesse
http://localhost:4200/.
(Liste aqui os principais endpoints da sua API, por exemplo)
POST /api/register/: Registro de novo usuário.POST /api/login/(ou/api/token/para Simple JWT): Login e obtenção de tokens.POST /api/refresh/(para Simple JWT): Refresh do access token.POST /api/logout/GET /api/user/GET /api/forgot/GET /api/reset/