El registro de usuario es una de las partes más esenciales de una aplicación web. django-registration-redux
y django-alluth
son las aplicaciones de registro más famosas disponibles en Django. Esta serie de tutoriales trata sobre la instalación, configuración y personalización django-allauth
y sirve como una guía para los nuevos usuarios que desean comenzar rápidamente allauth
y realizar personalizaciones útiles en el camino sin mucho dolor.
Este artículo cubre la instalación y algunas configuraciones básicas. Más adelante, nos ocuparemos del inicio de sesión social, las clases extendidas y el uso eficiente de DefaultAccountAdapter
para agregar un proceso personalizado.
Puede ser abrumador para un django
novato o un nuevo usuario de django-allauth
sí mismo. Aunque está bien documentado, debido a las limitaciones de tiempo y recursos de los desarrolladores involucrados, no ha habido muchos artículos ni tutoriales detallados sobre la biblioteca. Así que esta serie trata de resolver ese problema y hacer una serie completa de guías para que sea django-allauth
fácil de usar y trabajar para la comunidad django.
¿Como instalar?
Puede descargar los archivos utilizados en el tutorial para obtener una ventaja. Los pasos a continuación lo guían a través de la configuración.
- Cree un proyecto Django si aún no tiene uno.
- Instalar
django-allauth
usando el comandopip install django-allauth
- Agregue
'allauth
,allauth.account'
yallauth.socialaccount
todos los inicios de sesión sociales necesarios paraINSTALLED_APPS.
Puede ver la lista completa de API admitidas aquí . La función de inicio de sesión social se describe en detalle en el siguiente artículo. Después de configurar, las aplicaciones instaladas deberían ser similares a las que se indican a continuación.
INSTALLED_APPS = [ 'django.contrib.admin', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.google', 'allauth.socialaccount.providers.facebook', 'django.contrib.auth', 'django.contrib.sites', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
- Configure los
template
ajustes del procesador de contextosettings.py
y también agregue un patrón de URL en el proyecto urls.py - Agregue el siguiente backend de autenticación.
- Copie los archivos de plantilla del repositorio django-allauth o mi repositorio personalizado (he hecho algunas modificaciones y una buena estructuración) y péguelo en la
templates
carpeta en el directorio de su proyecto. - Agregue las URL allauth en
urls.py
el directorio principal de su proyecto. Después de agregar las URL allauth, lo siguiente debería verse así, - También puede agregar el CSS personalizado usted mismo o mi CSS (bien comentado y documentado) que he creado durante mi uso de las plantillas allauth. Incluye estilos para casi todas las páginas e incluso plantillas de correo electrónico compatibles con dispositivos móviles para correos electrónicos de confirmación y restablecimiento de contraseña. Puede hacerlo creando una
static
carpeta en el directorio del proyecto y colocando el CSS en laaccount
carpeta. - Ejecute
python manage.py makemigrations
ypython manage.py migrate
para ejecutar todas las migraciones necesarias y ejecutepython manage.py runserver
para iniciar el servidor django. - Siga los patrones de URL para mostrar el formulario de registro.
Por ejemplo:localhost:8000/accounts/login
para mostrar la página de inicio de sesión. - Caducidad de la confirmación del correo electrónico: establece la cantidad de días dentro de los cuales se debe activar una cuenta. P.ej:
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS=7
- Se requiere correo electrónico para la activación: esta opción le permite establecer si se debe solicitar la dirección de correo electrónico para registrarse. Configure
False
para deshabilitar el requisito de correo electrónico. P.ej:ACCOUNT_EMAIL_REQUIRED = True
- Verificación de correo electrónico de la cuenta: esta opción se puede usar para establecer si es necesaria una verificación de correo electrónico para que un usuario inicie sesión después de registrar una cuenta. Puede usar ‘obligatorio’ para impedir que un usuario inicie sesión hasta que se verifique el correo electrónico. Puede configurar
optional
el envío del correo electrónico pero permitir que el usuario inicie sesión sin un correo electrónico. También puede configurarnone
para no enviar ningún correo electrónico de verificación. (No recomendado) Por ejemplo:ACCOUNT_EMAIL_VERIFICATION = "mandatory"
- Límite de intentos de inicio de sesión: esta es una característica importante que se puede utilizar para evitar ataques de fuerza bruta en el módulo de inicio de sesión del usuario en allauth. Se puede establecer el número máximo de intentos de inicio de sesión y se bloquea el inicio de sesión del usuario hasta que se agote el tiempo de espera. Esta característica hace uso de
ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT
la configuración. P.ej:ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
- Tiempo de espera del límite de intentos de inicio de sesión: esta configuración debe usarse con
ACCOUNT_LOGIN_ATTEMPTS_LIMIT
la configuración. El valor establecido está en segundos desde el último intento fallido de inicio de sesión. Tenga en cuenta que esto no evita que el inicio de sesión del administrador sea forzado. P.ej:ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 # 1 day in seconds
- Redirección de URL de inicio y cierre de sesión: cuando el usuario inicia o cierra sesión, es posible que desee redirigir al usuario a una URL o página en particular y la configuración a continuación se puede usar para establecer esos valores. De forma predeterminada, allauth redirige el inicio de sesión a
/accounts/profile/
la URL y cierra la sesión a lalocalhost:8000
o cualquierlocalhost
página de inicio.
Ej :ACCOUNT_LOGOUT_REDIRECT_URL ='/accounts/login/'
Ej :LOGIN_REDIRECT_URL = '/accounts/email/'
TEMPLATES = [ { 'BACKEND' : 'django.template.backends.django.DjangoTemplates' , 'DIRS' : [ os.path.normpath(os.path.join(BASE_DIR, 'templates' )), ], 'APP_DIRS' : True , 'OPTIONS' : { 'context_processors' : [ 'django.template.context_processors.debug' , 'django.template.context_processors.request' , 'django.contrib.auth.context_processors.auth' , 'django.contrib.messages.context_processors.messages' , 'django.template.context_processors.request' , ], }, }, ] |
AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend' , 'allauth.account.auth_backends.AuthenticationBackend' , ) |
from django.contrib import admin from django.urls import path from django.conf.urls import url, include urlpatterns = [ path( 'admin/' , admin.site.urls), url(r '^accounts/' , include( 'allauth.urls' )), ] |
Configuración:
la mayoría de las funciones de django-allauth se pueden configurar utilizando los adaptadores y variables integrados colocándolos en un settings.py.
archivo. Aunque la documentación tiene toneladas de tales opciones con buenas explicaciones, se destacan algunas importantes a continuación.
Finalmente, su allauth
configuración debe ser similar a la siguiente configuración.
#django-allauth registraion settings ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 1 ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = "mandatory" ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5 # 1 day ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 #or any other page ACCOUNT_LOGOUT_REDIRECT_URL = '/accounts/login/' # redirects to profile page if not configured. LOGIN_REDIRECT_URL = '/accounts/email/' |
Referencias :
documentación oficial de django-allauth
Mis plantillas personalizadas y css