django d'authentification sans mot de passe
Je suis en utilisant l'authentification par défaut du système avec django, mais je l'ai ajouté sur un OpenID bibliothèque, où je peux l'authentification des utilisateurs via OpenID. Ce que je voudrais faire est de connecter entre eux, mais il semble à l'aide de la valeur par défaut de django auth système, j'ai besoin de leur mot de passe pour authentifier l'utilisateur. Est-il un moyen de contourner ce problème sans l'aide de leur mot de passe?
Je voudrais faire quelque chose comme ça...
user = ... # queried the user based on the OpenID response
user = authenticate(user) # function actually requires a username and password
login(user)
Plus tôt je viens de laisser sur le authenticate
fonction, mais il s'attache un backend
champ, qui est requis par la connexion.
- Double Possible de Manuellement la connexion d'un utilisateur sans mot de passe.
Vous devez vous connecter pour publier un commentaire.
Il est simple d'écrire une authentification personnalisée backend pour cela. Si vous créez yourapp/auth_backend.py avec le contenu suivant:
Puis l'ajouter à votre settings.py:
Dans votre vue, vous pouvez maintenant appeler authentifier sans mot de passe:
C'est un peu un hack, mais si vous ne voulez pas de réécrire un tas de trucs supprimer la authentifier
utilisateur serait votre objet Utilisateur
Vous pouvez facilement résoudre ce problème en créant votre propre backend d'authentification et de l'ajouter à la
AUTHENTICATION_BACKENDS
réglage.Il y a quelques OpenID backends d'ores et déjà disponibles, donc, avec un peu de recherche, vous pourriez vous épargner la peine d'en écrire une.
openid_token
pour votre OpenID backend etusername
avecpassword
pour normal de votre système d'authentification qu'ils travaillent tous les deux.Afin de faire authentifier sans mot de passe:
Dans votre settings.py:
Dans votre auth_backend.py:
# Si vous avez personnalisé le modèle de votre app puis, importer à partir d' .modèles CustomUser
Dans Vos Vues personnalisées de demande de connexion:
Pour Référence, voir https://docs.djangoproject.com/en/2.1/topics/auth/customizing/