quarta-feira, janeiro 21, 2026

Tabelas Padrão do Django: Autenticação, Permissões e Infraestrutura

 


Entendendo as Tabelas Padrão do Django: Autenticação, Permissões e Infraestrutura

Quando iniciamos um projeto com Django, várias tabelas são criadas automaticamente no banco de dados. Para quem olha pela primeira vez, nomes como auth_group, django_content_type ou django_migrations podem parecer confusos.

Este artigo explica para que serve cada uma dessas tabelas, como elas se relacionam e quando você deve (ou não) interagir com elas.

Atenção: a maioria dessas tabelas faz parte da infraestrutura do framework. Elas não são tabelas de negócio.


Visão geral

As tabelas padrão do Django podem ser agrupadas em quatro grandes áreas:

  1. Autenticação (quem é o usuário)
  2. Autorização (o que o usuário pode fazer)
  3. Infraestrutura interna do framework
  4. Sessão e estado

1. Tabelas de Autenticação

auth_user

É a tabela central de usuários autenticáveis do Django.

Ela armazena informações como:

  • nome de usuário
  • senha (sempre em hash)
  • e-mail
  • flags de acesso (is_active, is_staff, is_superuser)
  • datas de login e criação

Essa tabela é usada pelo sistema de login, logout e controle de acesso.

Boa prática: use auth_user para autenticação, não como entidade de negócio (ex.: funcionário, cliente, aluno).


2. Tabelas de Autorização (Permissões)

auth_permission

Armazena permissões individuais do sistema.

Para cada model Django, o framework cria automaticamente permissões padrão, como:

  • adicionar
  • alterar
  • excluir
  • visualizar

Essas permissões são usadas para controlar o acesso a funcionalidades específicas.

auth_group

Representa grupos de usuários.

Um grupo é basicamente um conjunto de permissões que pode ser atribuído a vários usuários.

Exemplos de grupos comuns:

  • Administradores
  • Editores
  • Leitores

auth_group_permissions

Tabela associativa entre:

  • grupos
  • permissões

Define quais permissões cada grupo possui.

É aqui que o Django resolve a pergunta:

“O que usuários deste grupo podem fazer?”

auth_user_groups

Tabela associativa entre:

  • usuários
  • grupos

Define a quais grupos cada usuário pertence.

Um usuário pode estar em vários grupos ao mesmo tempo.

auth_user_user_permissions

Tabela associativa entre:

  • usuários
  • permissões individuais

Permite conceder permissões diretamente a um usuário, sem passar por grupos.

Boa prática: usar grupos sempre que possível e evitar permissões diretas, pois elas dificultam a manutenção.


3. Tabelas de Infraestrutura do Django

django_content_type

Registra todos os models instalados no projeto.

Cada registro identifica:

  • o app
  • o nome do model

Essa tabela é usada internamente pelo Django para:

  • sistema de permissões
  • Django Admin
  • relacionamentos genéricos
  • logs

Ela é fundamental para o funcionamento interno do framework.

django_admin_log

Armazena logs de ações realizadas no Django Admin.

Registra informações como:

  • qual usuário realizou a ação
  • qual objeto foi afetado
  • qual operação foi executada (criação, alteração, exclusão)

É muito útil para auditoria administrativa.

django_migrations

Controla quais migrações já foram aplicadas no banco de dados.

Cada vez que você executa python manage.py migrate, o Django consulta essa tabela para saber:

  • quais migrações já rodaram
  • quais ainda precisam ser aplicadas

Importante: nunca edite ou apague registros dessa tabela manualmente.


4. Tabela de Sessão

django_session

Armazena as sessões ativas dos usuários.

É usada para:

  • manter usuários logados
  • armazenar dados temporários
  • mensagens flash
  • estados intermediários de formulários

As sessões têm prazo de validade e podem ser limpas automaticamente.


Resumo rápido

Tabela Finalidade
auth_userUsuários do sistema
auth_groupGrupos / perfis
auth_permissionPermissões
auth_group_permissionsGrupo ↔ Permissão
auth_user_groupsUsuário ↔ Grupo
auth_user_user_permissionsPermissões diretas
django_content_typeRegistro de models
django_admin_logLog do admin
django_migrationsControle de migrations
django_sessionSessões

Boas práticas gerais

  • Não manipule essas tabelas diretamente via SQL.
  • Use sempre a API do Django (models, admin, permissions).
  • Centralize permissões em grupos.
  • Use auth_user apenas para autenticação.
  • Separe entidades de negócio em tabelas próprias.

Conclusão

As tabelas padrão do Django formam a base de segurança e funcionamento do framework. Entendê-las ajuda a:

  • modelar sistemas mais seguros
  • evitar erros em produção
  • criar arquiteturas mais limpas e escaláveis

Mesmo que você nunca precise mexer nelas diretamente, saber para que cada uma existe faz toda a diferença.

Nenhum comentário:

Postar um comentário






Busca do Google

Custom Search