2016-10-24 2 views
1

Ich möchte einige Routen daran hindern, von allen Rollen zugegriffen wird (super_admin, ADMIN enthalten), mit Ausnahme (ROLE_CUSTOM)Symfony2 Zugangskontrolle beschränken ROLE_SUPER_ADMIN

Wo ROLE_CUSTOM ist eine benutzerdefinierte Rolle für bestimmte Route erstellt.

Die einzige Rolle kann diesen Weg Zugang ist (ROLE_CUSTOM)

ich dies von security.access_control.yml steuern möchten oder von Firewall-Konfiguration.

Ich weiß, ich kann is_granted Funktion verwenden, aber ich möchte es von security.access_control.yml oder von Firewall-Konfiguration steuern.

Wie kann ich das erreichen?

Antwort

2

Rollen sind einfach, und sind im Grunde Strings, die Sie nach Bedarf erfinden und verwenden, also sind ROLE_SUPER_ADMIN und ROLE_ADMIN bereits benutzerdefinierte Rollen, die von Ihnen erstellt wurden. Dann hängt alles von Ihrer Rolle Hierarchie (Reference):

security: 
    role_hierarchy: 
     ROLE_CUSTOM:  ROLE_USER 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

Damit Sie URL-Muster für Benutzer mit ROLE_CUSTOM nur gehen Sie wie folgt (Reference) schützen:

security: 
    access_control: 
     - { path: ^/exclusive-path$, role: ROLE_CUSTOM } 

Ready! Nur Benutzer mit ROLE_CUSTOM können auf /exclusive-path Pfade zugreifen.