我目前正試圖圍繞Symfony安全性,尤其是ACL。我一直在閱讀各種文檔,對於ACL角色0權限似乎很重要。Symfony安全角色
但是,我不明白這些角色&權限是在哪裏定義的。例如。該文檔有一小部分角色[1],但在本示例中,ROLE_USER
來自哪裏?此外,角色如何封裝權限,如在Symfony應用程序中角色&之間的這種關係定義的權限?
[1] http://symfony.com/doc/master/book/security.html#roles
我目前正試圖圍繞Symfony安全性,尤其是ACL。我一直在閱讀各種文檔,對於ACL角色0權限似乎很重要。Symfony安全角色
但是,我不明白這些角色&權限是在哪裏定義的。例如。該文檔有一小部分角色[1],但在本示例中,ROLE_USER
來自哪裏?此外,角色如何封裝權限,如在Symfony應用程序中角色&之間的這種關係定義的權限?
[1] http://symfony.com/doc/master/book/security.html#roles
內置特殊角色(IS_AUTHENTICATED_FULLY
,IS_AUTHENTICATED_REMEMBERED
,IS_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]
希望它可以幫助你。
更新#1: 它與Acl
實施。您可以根據需要創建許多acl(例如Class
,ClassField
,Object
)。 每Acl
爲Domain
有一個或多個Entries
這樣的:
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_SILVER
允許EDIT
和VIEW
這Domain
根據。但ROLE_BRONZE
只允許VIEW
。
在您的Controller
中,您可以檢查權限。詳情請參閱example。
UPDATE#2: 要授予某些權限,請使用MaskBuilder。
謝謝。但是,我仍然不明白角色如何與權限相關聯。例如。你聲明ROLE_BRONZE,就像在哪裏聲明ROLE_BRONZE的人實際上有能力做什麼? – Luke
請參閱**更新#1 ** – sergekv