1

私は現在、Symfony のセキュリティ、特に ACL に頭を悩ませようとしています。さまざまなドキュメントを読んでいますが、ACL の役割と権限については重要なようです。

ただし、これらの役割と権限がどこで定義されているのかわかりません。たとえば、ドキュメンテーションには役割に関する小さなセクションがあります [1] が、この例では、ROLE_USERどこから来たのでしょうか? さらに、Symfony アプリケーションのどこでロールとパーミッションの間のこの関係が定義されているかのように、ロールはパーミッションをどのようにカプセル化するのでしょうか?

[1] http://symfony.com/doc/master/book/security.html#roles

4

1 に答える 1

5

組み込みの特別な役割 ( IS_AUTHENTICATED_FULLYIS_AUTHENTICATED_REMEMBEREDIS_AUTHENTICATED_ANONYMOUSLY) は、ここで定義されています: AuthenticatedVoter

app/config/security.yml階層の形式で定義する必要がある他のすべてのロール。例えば:

security:
    acl:
        connection: default
    # ...
    role_hierarchy:
        ROLE_SILVER: [ROLE_BRONZE]
        ROLE_GOLD: [ROLE_SILVER]
        ROLE_PLATINUM: [ROLE_GOLD]
        ROLE_ADMIN: [ROLE_PLATINUM, ROLE_ALLOWED_TO_SWITCH]

お役に立てば幸いです。

UPDATE#1: で実装されていAclます。必要なものに対して多数の ACL を作成できます(たとえば、、、Class) 。すべての for には、次のようなものが 1 つ以上あります。ClassFieldObjectAclDomainEntries

Entry#1: User with 'ROLE_BRONZE' allow to 'VIEW' this `Domain`
Entry#2: User with 'ROLE_SILVER' allow to 'EDIT' this `Domain`

したがって、role_hierarchy ROLE_SILVERallow toEDITおよびVIEWthisに従ってDomainください。ただしROLE_BRONZE、許可するだけVIEWです。

あなたControllerの許可を確認することができます。詳細については、このを参照してください。

更新 #2: 一部の権限を付与するには、MaskBuilderを使用します。

于 2013-10-18T06:13:36.063 に答える