Autenticación de usuarios en Django

Django viene con un sistema de autenticación de usuarios. Maneja cuentas de usuario, grupos, permisos y sesiones de usuario basadas en cookies. Esta sección de la documentación explica cómo funciona la implementación por defecto «out of the box», así como cómo extender y personalizar para satisfacer las necesidades de tu proyecto.

Resumen

El sistema de autenticación de Django maneja tanto la autenticación como la autorización. Brevemente, la autenticación verifica que un usuario es quien dice ser y la autorización determina qué puede hacer un usuario autenticado. Aquí el término «autenticación» se utiliza para referirse a ambos tareas.

El sistema auth consiste en:

  • Usuarios

  • Permisos: Banderas binarias (sí/no) que designan si un usuario puede realizar una tarea determinada.

  • Grupos: Una forma genérica de aplicar etiquetas y permisos a más de un usuario.

  • Un sistema de hashing de contraseñas configurable

  • Herramientas para formularios y vistas de inicio de sesión de usuarios, o restricción de contenido

  • Un sistema de backend pluggable

El sistema de autenticación en Django busca ser muy genérico y no proporciona algunas características comunes encontradas en sistemas de autenticación web. Se han implementado soluciones para algunos de estos problemas comunes en paquetes terceros:

  • Verificación de la fuerza de contraseñas

  • Limitación del número de intentos de inicio de sesión

  • Autenticación contra terceros (OAuth, por ejemplo)

  • Permisos a nivel de objeto

Instalación

El soporte para autenticación está incluido como un módulo contribuyente de Django en django.contrib.auth. Por defecto, la configuración requerida ya está incluida en el archivo settings.py generado por django-admin startproject, que consiste en dos elementos listados en tu configuración INSTALLED_APPS.

  1. 'django.contrib.auth' contiene el núcleo del marco de autenticación y sus modelos predeterminados.

  2. 'django.contrib.contenttypes' es el sistema de tipos de contenido de Django :doc:` </ref/contrib/contenttypes>`, que permite asociar permisos con los modelos que creas.

y estos elementos en tu configuración MIDDLEWARE :

  1. SessionMiddleware gestiona las sesiones a lo largo de solicitudes.

  2. AuthenticationMiddleware asocia usuarios con solicitudes utilizando sesiones.

Con estas configuraciones en lugar, ejecutar el comando manage.py migrate crea las tablas de base de datos necesarias para los modelos y permisos relacionados con autenticación y permisos para cualquier modelo definido en tus aplicaciones instaladas.

Uso

Usando la implementación predeterminada de Django

Referencia de API para la implementación por defecto

Personalización de Usuarios y autenticación

Gestión de contraseñas en Django