2010-01-21 4 views

Répondre

3

Voir the documentation, qui contient cette citation:

Le système d'administration de Django est étroitement couplé à l'objet Django User décrit au début de ce document . Pour l'instant, la meilleure façon de traiter ce problème est de créer un Django User objet pour chaque utilisateur qui existe pour votre backend (par exemple, dans votre répertoire LDAP , votre base de données SQL externe, etc.) Vous pouvez écrire un script pour faire à l'avance, ou votre méthode authenticate peut faire la première fois qu'un utilisateur se connecte à.

+0

Mais ce qui se passera si un utilisateur « standard » (qui viennent du django.contrib .auth.models.User) a un drapeau 'is_staff'. Devrait-il être en mesure de se connecter à l'interface d'administration? Ce que je veux, c'est éviter une attaque de privilège-escalade. Je pensais supprimer les champs 'is_staff' et 'is_superuser' de la table django User, mais, d'après ce que j'ai lu, un autre backend d'authentification (comme celui utilisant LDAP) va créer un objet utilisateur Django pour chaque utilisateur existe pour votre backend ". Je n'arrive toujours pas à comprendre comment éviter cela, en gardant l'utilisateur frontend * très * loin du site d'administration. –

+0

@ S.c. - Si un utilisateur "standard" a 'is_staff' n'a pas besoin de savoir s'il peut accéder à autre chose que le site d'administration de Django. Utilisez les autorisations (http://docs.djangoproject.com/en/dev/topics/auth/#id1) pour déterminer qui peut accéder à quoi. La seule exception est les objets 'User' avec' is_superuser', qui passent tous les contrôles d'autorisation. –