Quiero crear una aplicación que use el administrador de django, pero permita inicios de sesión a través de google (la cuenta de google de mi empresa) en lugar del ModelAdmin predeterminado de django.
Actualmente, parece que social-app-django ( google ) es el camino a seguir, pero después de haber instalado y configurado un proyecto, no tengo claro cómo puedo permitir que los inicios de sesión de administrador de django usen la autenticación social-app-django . Intenté configurar mi proyecto como se describe aquí http://python-social-auth.readthedocs.io/en/latest/configuration/django.html pero no está claro cómo se puede integrar esto con el administrador de django.
Encontré este fragmento (que parece desactualizado ) y lo agregué, pero obtengo un 404 cuando intento ir a /admin/ :
Página no encontrada (404) Método de solicitud: GET URL de solicitud: http://127.0.0.1:8000/accounts/login/?next=/admin/login/%3Fnext%3D/admin/ Usando la URLconf definida en telos.urls , Django probó estos patrones de URL, en este orden: ^login/(?P[^/]+)/$ [name='begin'] ^complete/(?P[^/]+)/$ [name=' complete'] ^desconectar/(?P[^/]+)/$ [nombre='desconectar'] ^desconectar/(?P[^/]+)/(?P[^/]+)/$ [nombre ='disconnect_individual'] ^admin/ La ruta actual, accounts/login/, no coincide con ninguno de estos.
Si elimino el fragmento, /admin/ redirigirá a /admin/login/ y al intentar iniciar sesión devolverá el texto de ERROR:
Ingrese el nombre de usuario y la contraseña correctos para una cuenta de personal. Considere que ambos campos son sensibles al uso de mayúsculas.
Además de la configuración , agregué lo siguiente a mi settings.py :
proyectos/modelos.py (MiUsuario)
from django.contrib.auth.models import AbstractUser class MyUser(AbstractUser): passconfiguración.py
# for identification of SOCIAL_AUTH_USER # http://python-social-auth.readthedocs.io/en/latest/configuration/settings.html#user-model SOCIAL_AUTH_USER_MODEL = 'projects.MyUser' AUTH_USER_MODEL = 'projects.MyUser' # not sure if this is needed¿Alguien puede indicarme cómo puedo configurar mi proyecto para permitirme iniciar sesión en el administrador de django a través de social-app-django ( google )?
Django Admin usa la aplicación auth contrib, por lo que cualquier proceso de autenticación activa el mismo mecanismo que un usuario que inicia sesión en una sección que no es de administrador y será procesado por backends de python-social-auth si están definidos en la configuración AUTHENTICATION_BACKENDS .
Para que funcione necesitarás:
Login with Google (vinculando a /login/google-oauth2 ) al formulario de inicio de sesión. Puede anular el formulario de inicio de sesión predeterminado agregando una plantilla admin/login.html o definiendo un AdminSite personalizadois_staff , de lo contrario, se prohibirá el acceso al administrador.