Des projets tels que Django-guardian et django-permissions vous permettent d'avoir des autorisations au niveau de l'objet. Toutefois, si deux objets sont liés entre eux par une relation parent-enfant, l'objet enfant peut-il hériter de l'autorisation de l'objet parent, sauf indication contraire? Par exemple, un subfolder
doit hériter de l'autorisation parent folder
à moins qu'un utilisateur attribue explicitement une autorisation différente pour le sous-dossier. Quelle est la meilleure façon d'y parvenir en utilisant Django, en particulier, le module Django-guardian?Autorisation en cascade au niveau de l'objet dans Django
3
A
Répondre
1
Lorsque vous vérifiez si un utilisateur dispose d'autorisations sur un objet et que ce n'est pas le cas, vous pouvez vérifier s'il dispose d'une autorisation sur son parent.
Vous pouvez même faire votre propre fonction, par exemple:
def your_has_perm(user, perm, obj):
has = user.has_perm(perm, obj)
if not has and hasattr(obj, 'parent'):
return your_has_perm(user, perm, obj.parent)
return has
Cela devrait traverser les parents jusqu'à ce qu'il trouve une autorisation d'un parent ou d'un faux retour.
Questions connexes
- 1. Autorisation au niveau du modèle dans Rails
- 2. Autorisation de rôle au niveau du groupe dans Node.js
- 3. Autorisation de lecture/affichage Django uniquement sur les modèles + autorisation de niveau ligne
- 4. framework Django REST: aide sur autorisation de niveau objet
- 5. Autorisation au niveau des attributs dans Rails 3
- 6. Boîtes de sélection en cascade Django/jQuery?
- 7. Django .is_superuser autorisation champ
- 8. Django cascade sauvegarder?
- 9. Autorisation de niveau de méthode d'attribut personnalisé
- 10. Autorisation Django LDAP
- 11. Autorisation de niveau de ressource dans le service RESTful
- 12. Autorisation de niveau de données dans ASP.Net MVC 3
- 13. Autorisation django sans utiliser request.user.is_authenticated()
- 14. Django: compression de données TextField (string) au niveau base de données ou niveau de code
- 15. autorisation Django + Apache + mod_wsgi refusée
- 16. autorisations de niveau ligne dans django
- 17. Problèmes avec les modèles Django au niveau du modèle
- 18. java.io.IOException: ouverture échouée: EACCES (autorisation refusée) lors de l'écriture d'un fichier au niveau de l'API 23
- 19. Django: option on_delete en cascade ne fonctionne pas
- 20. Django gère les URLs non-existantes au niveau du modèle
- 21. Comment puis-je faire plus d'un niveau de suppression en cascade dans Linq?
- 22. Comment attribuer en masse des autorisations au niveau du modèle dans le projet Django existant?
- 23. Django - meilleure évaluation des relations au niveau du modèle
- 24. Impossible d'ajouter une autorisation d'exécution au-dessus du niveau 23 de l'API?
- 25. ESI dans une cascade de vernis?
- 26. Accès au contrôle entre DataGridCells, ComboBoxes en cascade dynamique
- 27. Injection du niveau de l'application dans le paramètre de niveau de projet dans Django
- 28. Résolution en cascade dans Unity
- 29. Meilleure façon d'étendre l'authentification/autorisation django
- 30. Hibernate cache de second niveau et ON DELETE CASCADE dans le schéma de base de données
Cela ne fonctionnera pas bien. Comment pourriez-vous savoir si les permissions ont été générées automatiquement et vous devriez les changer si les permissions des parents changent? –
Juste, je n'ai pas beaucoup aimé, la réponse a été mise à jour d'une manière beaucoup plus simple. Merci pour votre avis. – jpic
Donne un sens. Où est le meilleur endroit pour mettre une méthode comme celle-ci? De plus, comme la vérification d'autorisation récursive est effectuée dans le code, comment interrogez-vous la base de données pour obtenir une liste de tous les objets auxquels l'utilisateur a l'autorisation? – Tony