2017-04-06 2 views
2

Je veux créer une application qui utilise l'administrateur django, mais qui permet les connexions via google (mon compte google de l'entreprise) à la place du django par défaut ModelAdmin.Intégrer python-social-auth (social-app-django) pour être utilisé avec l'administrateur Django

Actuellement, il ressemble à social-app-django (google) est la voie à suivre, mais après avoir installé et la configuration d'un projet, il n'est pas clair pour moi comment je peux autoriser les connexions d'administration de django d'utiliser l'authentification social-app-django. J'ai essayé de configurer mon projet comme décrit ici http://python-social-auth.readthedocs.io/en/latest/configuration/django.html mais il n'est pas clair comment cela peut être intégré avec l'admin django.

J'ai trouvé ce snippit (qui semble hors jour), et a ajouté, mais obtenir un 404 lorsque je tente de goto /admin/:

Page non trouvée (404) Demande Méthode: GET Demande URL: http://127.0.0.1:8000/accounts/login/?next=/admin/login/%3Fnext%3D/admin/ En utilisant l'URLconf défini dans telos.urls, Django a essayé ces modèles d'URL , dans cet ordre:^login/(? P [^ /] +)/$ [name = 'begin'] ^ compléter/(? P [^ /] +)/$ [nom = 'compléter'] ^ déconnecter/(? P [^ /] +)/$ [nom = 'déconnecter'] ^ di sconnect/(? P [^ /] +)/(? P [^ /] +)/$ [name = 'disconnect_individual']^admin/Le chemin actuel, accounts/login /, ne correspond à aucun celles-ci.

Si je supprime le snippit, /admin/ seront redirigés vers /admin/login/ et tentative de connexion renvoyer le texte ERREUR:

S'il vous plaît entrez le nom d'utilisateur et mot de passe pour un compte personnel. Notez que les deux champs peuvent être sensibles à la casse.

En plus du configuration, je l'ai ajouté ce qui suit à mon settings.py:

projets/models.py (MyUser)

from django.contrib.auth.models import AbstractUser 

class MyUser(AbstractUser): 
    pass 

settings.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 

Ca n quelqu'un me diriger sur la façon dont je peux configurer mon projet pour me permettre de me connecter à l'administrateur django par social-app-django (google)?

Répondre

1

Django d'administration utilise l'application de contrib auth, de sorte que tout processus d'authentification déclenche le même mécanisme qu'un utilisateur qui se connecte à une section non-admin et elle sera traitée par python-social-auth backends si elles sont définies dans le cadre AUTHENTICATION_BACKENDS.

Pour le faire fonctionner, vous devrez:

  1. Ajouter un lien Login with Google (lien vers /login/google-oauth2) au formulaire de connexion.Vous pouvez remplacer le formulaire de connexion par défaut en ajoutant un modèle admin/login.html ou en définissant un personnalisé AdminSite
  2. Assurez-vous que l'utilisateur est marqué is_staff, sinon l'accès à l'administrateur sera interdit.
+0

a dû travailler sur la façon de remplacer le modèle, etc .. mais il a fonctionné. Merci! – monkut