Symfony gewährt Pfadzugriff auf mehrere Rollen in security.yml

Lesezeit: 2 Minuten

Benutzer-Avatar
nmcilree

Hallo, ich würde gerne den Zugriff auf einen Pfad in erlauben security.yml basierend auf dem Benutzer entweder mit ROLE_TEACHERoder ROLE_ADMIN.

Gemäß der Frage in Mehrere Rollen erforderlich für dieselbe URL in Symfony 2 sollte der Eintrag unten den Zugriff auf beide Rollen ermöglichen.

- { path: ^/admin, roles: ROLE_ADMIN}
- { path: ^/admin, roles: ROLE_TEACHER}

Dadurch wird jedoch nur der obersten Rolle der Zugriff gewährt. Gibt es eine Möglichkeit, mehrere Rollenzugriff auf einen einzelnen Pfad zu haben?

  • Das Ersetzen der Reihenfolge von Entitäten führt immer noch dazu, dass nur eine der Rollen funktioniert. Jede der beiden Antworten unten ermöglicht die Verwendung mehrerer Rollen.

    – nmcilree

    21. Oktober 2013 um 8:01 Uhr

  • Mehrere Einträge mit dem gleichen Muster würden nicht funktionieren. Der erste übereinstimmende Eintrag hat Priorität.

    – Konstantin Pelepelin

    5. November 2014 um 14:04 Uhr

Dies ist der Weg zu gehen und was ich verwende:

- { path: ^/admin, roles: [ROLE_ADMIN, ROLE_TEACHER] }

  • Wenn der Benutzer die eine oder andere Rolle hat, hat er Zugriff. Sie können es mit der Rollenhierarchie von @sergrkv answer kombinieren und dann hat ein Benutzer Zugriff auf den Router, wenn er die Rolle in der Hierarchiekette hat

    – Udan

    30. Oktober 2016 um 21:55 Uhr

  • “Funktioniert das in einer ODER-Logik?” Ja standardmäßig, aber nein, wenn Sie access_decision_manager.strategy: unaminoous verwenden

    – Wesley Abbenhuis

    26. Juli 2019 um 5:34 Uhr

Benutzer-Avatar
Serge Kwaschnin

Sie können die Rollenhierarchie in verwenden security.yml:

role_hierarchy:
    ROLE_ADMIN: [ROLE_TEACHER]

#...

access_control:
    - { path: ^/admin, roles: ROLE_TEACHER}

Alle diese Rollen haben also Zugriff auf diesen Pfad.

  • Wenn Rolle1 Rolle2 erbt, hat sie Zugriff auf alle ihre Pfade. Wenn Sie möchten, dass nur 1 gemeinsamer Pfad für beide Rollen zugänglich ist und jeder 5 hat, funktioniert dieses Beispiel nicht.

    – Udan

    9. Januar 2015 um 9:19 Uhr

  • @Udan der Dok sagt über Hierarchie, und es funktioniert in den meisten Fällen gut, wenn Ihre Anwendung eine saubere Struktur hat.

    – Serge Kwaschnin

    9. Januar 2015 um 10:04 Uhr

  • Ich habe nicht gesagt, dass es falsch ist, nur dass es nicht auf alle Fälle zutrifft. Das Problem betraf den “Mehrfachrollenzugriff auf einen einzelnen Pfad”, nicht auf alle Pfade, auf die die andere Rolle zugreifen kann.

    – Udan

    9. Januar 2015 um 10:08 Uhr

  • @Udan Sie haben in allen Fällen Recht. Ich denke, meine Antwort wie Ihre gilt nicht für alle Fälle.

    – Serge Kwaschnin

    10. Januar 2015 um 10:47 Uhr

1204840cookie-checkSymfony gewährt Pfadzugriff auf mehrere Rollen in security.yml

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy