flosy.info | Développement Web, Open source …

TAG | ACL

Symfony fournit un système d’ACL qui par défaut utilise un OU logique sur les droits. Voici un extrait du fichier security.yml :

security:
    access_control:
        - { path: ^/css/compile.*$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/js/compile.*$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/is_authenticated, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user, roles: [ROLE_ADMIN, ROLE_MANAGE_USER] }

Dans cette configuration par défaut l’utilisateur accède à /user s’il dispose du rôle ROLE_ADMIN ou ROLE_MANAGE_USER.

Ce fonctionnement ne correspond pas à celui attendu. Dans le projet nous souhaitons que l’utilisateur ait les 2 droits pour accéder à /usr.

Pour cela nous changeons la stratégie de décision d’accès :

security:
    access_decision_manager:
        # strategy can be: affirmative, unanimous or consensus
        strategy: unanimous

    access_control:
        - { path: ^/css/compile.*$, role: IS_AUTHENTICATED_ANONYMOUSLY }

Si vous souhaitez aller plus loin vous trouverez l’explication sur le fonctionnement de l’Access Decision Manager dans la documentation du composant (http://symfony.com/doc/master/components/security/authorization.html).

Related Posts:

· ·

Theme Design by devolux.nh2.me