10 Autenticação
Para autenticar no Django REST Framework (DRF) e consumir a API como um usuário logado, você pode usar várias abordagens de autenticação, como:
- Autenticação via Token.
 - Autenticação via Sessão/Cookie (principalmente para navegadores).
 - Autenticação JWT (JSON Web Token).
 
Autenticação via Token
Abaixo, vamos ver como configurar a Autenticação via Token no Django e como consumir a API com um token de autenticação.
Passo 1: Configurar Autenticação por Token no Django REST Framework
1. Instale o pacote djangorestframework (caso ainda não tenha):
2. Instale o pacote django-rest-authtoken, necessário para gerar e gerenciar tokens de autenticação:
3. Adicione rest_framework e rest_framework.authtoken ao INSTALLED_APPS no seu settings.py:
4. Configure o Django REST Framework para usar a autenticação por token:
   # settings.py
   REST_FRAMEWORK = {
       'DEFAULT_AUTHENTICATION_CLASSES': [
           'rest_framework.authentication.TokenAuthentication',
       ],
       'DEFAULT_PERMISSION_CLASSES': [
           'rest_framework.permissions.IsAuthenticated',
       ],
   }
5. Execute a migração para criar as tabelas necessárias:
Passo 2: Gerar Tokens de Autenticação
Crie uma URL para o endpoint de obtenção de tokens de autenticação. No seu urls.py, adicione:
from django.urls import path
from rest_framework.authtoken.views import obtain_auth_token
urlpatterns = [
    # Outras rotas
    path('api/token/', obtain_auth_token, name='api_token_auth'),
]
Com isso, os usuários poderão obter tokens enviando uma requisição POST com suas credenciais (usuário e senha) para api/token/.
Passo 3: Obter o Token de Autenticação
Para obter o token, você pode usar o curl, Postman, ou qualquer cliente HTTP. No Postman, por exemplo:
- Envie uma requisição 
POSTparahttp://localhost:8000/api/token/. - No corpo da requisição (
body), envie as credenciais comox-www-form-urlencoded: 
ou no body -> raw -> json
{
        "username": "admin",
        "password": "123456"
    }
A resposta será o token de autenticação do usuário, por exemplo:
```json
{
    "token": "c1c82e123abc123abcde4567def01234abcd5678"
}
Passo 4: Usar o Token para Consumir a API
Agora, ao consumir a API, adicione o token ao cabeçalho de autenticação (Authorization) usando o formato Token <token>.
Exemplo de Consumo no Postman
- Acesse qualquer endpoint da API protegido, como 
http://localhost:8000/api/contents/. - No cabeçalho (
Headers), adicione: 
Com esse cabeçalho, o Django REST Framework identificará o usuário autenticado e permitirá o acesso aos recursos da API, desde que o usuário tenha as permissões necessárias.
Alternativa: Uso no Frontend com JavaScript (Fetch API)
Se estiver consumindo a API com JavaScript no frontend, o código para usar o token ficaria assim:
fetch('http://localhost:8000/api/contents/', {
    method: 'GET',
    headers: {
        'Authorization': 'Token c1c82e123abc123abcde4567def01234abcd5678',
        'Content-Type': 'application/json'
    }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Considerações Finais
- Manter o Token Seguro: Evite expor o token em locais de fácil acesso ou em JavaScript sem proteção.
 - Token Expirável (opcional): O pacote 
django-rest-framework-simplejwtoferece tokens JWT com tempo de expiração configurável, se precisar de tokens mais seguros. 
Esse fluxo permite que seu app Django autentique usuários e proteja rotas da API, limitando o acesso a quem possui um token válido.