2017-10-11 53 views
1

Dans mon application Django je besoin de type multiple d'utilisateurs Django:
1. Un utilisateur admin typique qui est identifié par e-mail et authentifié par mot de passe
2. Une application à distance qui se connecte à django et s'authentifie avec des clés et des jetons pré-partagés. L'e-mail n'est pas requis pour ce type d'utilisateur.Django: un backend d'authentification par modèle utilisateur

Chaque type d'utilisateur a différents attributs associés. Je sais que je peux étendre le modèle d'utilisateur dans Django. J'ai déjà créé un backend d'authentification par email. Mais cela fonctionne pour tous les comptes, y compris les applications distantes.

Existe-t-il un moyen efficace de créer un backend auth pour un type d'utilisateur?

Répondre

0

Vous pouvez créer un back-end d'authentification personnalisé pour l'application à distance et l'afficher dans vos paramètres comme ceci:

AUTHENTICATION_BACKENDS = (
    'path.to.email.authentication', 
    'path.to.remote.app.authentication', 
) 

De cette façon, Django va essayer d'utiliser d'abord l'authentification par e-mail et si cela échoue va essayer la authentification d'application à distance.

Vous pouvez lire sur backends d'authentification personnalisés here

Hope it helps!

0

Si vous souhaitez désactiver pour certains d'entre vous l'authentification par mot de passe, vous pouvez utiliser set_unusable_password. À partir des documents:

Marque l'utilisateur comme n'ayant pas défini de mot de passe. Ce n'est pas la même chose que d'avoir une chaîne vide pour un mot de passe. check_password() pour cet utilisateur ne retournera jamais True. Ne sauvegarde pas l'objet Utilisateur.

Vous pouvez en avoir besoin si l'authentification de votre application est effectuée par rapport à une source externe existante telle qu'un annuaire LDAP.