Aidez-moi à mettre en place des listes de contrôle d'accès pour mon application web PHP. J'utilise Zend_ACL spécifiquement.Que devraient être les ressources dans une liste de contrôle d'accès? Des modèles d'objets ou les instances des objets?
Je veux un contrôle précis de l'application sur quelle entité spécifique (que ce soit un utilisateur ou un groupe) a accès à quelle ressource. Je voudrais pouvoir accorder l'accès à une instance de ressource particulière, mais aussi à toutes les ressources de ce type. Par exemple:
- utilisateur # 1 dispose de droits d'édition sur tous les messages
- utilisateur # 2 est un éditeur invité et a modifier des privilèges sur le post ID # 5
- Group # 1 (invité) a lu des privilèges sur tout
- Les utilisateurs appartiennent à un groupe d'utilisateurs qui hérite de l'invité.
Ma question est la suivante: est-ce qu'un ACL doit référencer des types de ressources ou des instances spécifiques? Dois-je accorder aux utilisateurs la base, à l'échelle de type ressource priviledges à l'aide de l'ACL comme ceci:
- modifier des subventions à l'utilisateur # 1 sur le post
- subvention utilisateur # 2 rien de plus que c'est l'héritage
- groupe subvention # 1 lu sur toutes les ressources
- mettre en œuvre une table d'exceptions pour suivre les subventions et denys des ressources spécifiques
Ou devrais-je créer des ressources pour tous les cas individuels de mes différents types de ressources un d aller sur un découragement autorisant tous les utilisateurs à lire toutes les ressources? Semble plutôt brutal.
Ma solution actuelle est la suivante: en utilisant l'héritage des ressources, créez une ressource parent de type no, un enfant de cette racine pour chaque type, puis un enfant de chaque type pour chaque instance. Cela me permet d'accorder sur un type particulier et de refuser sur quelques instances, ou de refuser un type particulier mais accorder sur une instance (comme pour l'utilisateur n ° 2 ci-dessus). Ceci unifie bien mon système d'autorisations, mais mes besoins sont plus complexes. Bientôt, les types de ressources seront imbriqués. Donc, je vais différents modules qui peuvent être des parents ou des enfants. Un exemple: un module de galerie de photos sur le site, un module d'annonces avec une autre galerie plus exclusive qui se trouve en dessous. Je ne suis pas sûr de savoir quoi faire pour y remédier. Je voudrais toujours avoir la possibilité d'accorder dans toutes les galeries, ou juste une, ou juste quelques photos en dessous. Gardez à l'esprit que Zend_ACL ne prend pas en charge l'héritage multiple pour les ressources.
Quelle est la meilleure façon de mettre en œuvre cela? Tous avec un ACL ou en utilisant une logique intégrée dans chaque module?
Votre réponse à l'autre question était exactement ce dont j'avais besoin. Merci! – hornairs