Django - les autorisations de l'utilisateur à certains points de vue?
De l'admin, je vois que vous pouvez affecter des autorisations à un utilisateur ou un groupe d'utilisateurs afin de :permettre d'ajouter, de modifier ou de supprimer des données à partir d'un modèle.
C'est super, mais j'ai également besoin de permettre à un utilisateur ou un groupe d'utilisateurs d'accéder ou non à un groupe de points de vue. J'ai certain type de services sur mon site web je tiens donc à permettre à certains utilisateurs d'accéder à un certain nombre de services (pages vues) mais pas d'autres.
Alors, comment puis-je permettre à certains utilisateurs/groupes d'utilisateurs l'accès à certains points de vue? Merci!!!!
InformationsquelleAutor avatar | 2011-01-04
Vous devez vous connecter pour publier un commentaire.
Utilisateurs qui ne peuvent pas ajouter ou modifier etc. un certain modèle, ne sera pas en mesure de voir dans l'admin.
Si nous parlons de votre personnalisé créé vues ensuite, vous pouvez créer quelque chose qui vérifie la présence d'un utilisateur pour une autorisation et renvoie une erreur 404 si ils n'ont pas cette autorisation. Les autorisations sont liés à des modèles et à un groupe peuvent être affectés de diverses autorisations.
Vous pouvez ajouter une autorisation à un modèle comme celui-ci:
Ensuite, vous pouvez vérifier si un utilisateur a l'autorisation comme ceci:
Utilisation des autorisations, vous pouvez facilement ajouter ou supprimer des utilisateurs et des groupes simplement à l'aide de l'interface d'administration.
permission_required
décorateur a été autour de l'époque.Vous avez besoin pour gérer manuellement, mais il est assez facile. Sans doute il y a un attribut qui détermine si oui ou non un groupe a l'autorisation de voir un point de vue: alors que vous venez de décorer ce point de vue avec le
permission_required
décorateur, si c'est une simple question de savoir si l'utilisateur a une Autorisation particulière, ouuser_passes_test
si c'est un peu plus compliqué:en supposant que
is_allowed_to_see_view_myview
est une sorte de méthode sur l'objet Utilisateur.La l'authentification docs sont assez complets.
Pour la classe en fonction des vues, vous pouvez hériter
UserPassesTestMixin
classe dans la vue et de définirtest_func
Prendre un coup d'oeil à cette docs pour plus de détails sur la façon d'utiliser ceci:
Système de Permissions est centrée sur le modèle suppose que les autorisations sont liés à des modèles. Je pense que les 2 solutions sont les meilleures options:
A. Si vos points de vue sont liés à certains modèle spécifique, l'utilisation des autorisations personnalisées sur ce modèle, comme Marcus Whybrow suggéré.
B. [pas testé, peut ne pas fonctionner] Subclasss
User
et définir vos propres permissions. Vous n'avez pas besoin de modèle réel, c'est juste un wrapper pour votre application personnalisée de l'autorisation:N'oubliez pas d'exécuter
syncdb
pour ajouter des autorisations de base de données.Si vous utilisez Django de 1,9+, vous devriez être en mesure d'utiliser
PermissionRequiredMixin
: https://docs.djangoproject.com/en/1.9/topics/auth/default/#django.contrib.auth.mixins.PermissionRequiredMixin