【问题标题】:Symfony security rolesSymfony 安全角色
【发布时间】:2013-10-18 00:39:19
【问题描述】:

我目前正在尝试围绕 Symfony 安全,尤其是 ACL。我一直在阅读各种文档,并且 ACL 角色和权限似乎很重要。

但是,我不明白这些角色和权限是在哪里定义的。例如。文档中有一小部分关于角色 [1] 但在此示例中,ROLE_USER 来自哪里?此外,角色如何封装权限,例如,在 Symfony 应用程序中,角色和权限之间的这种关系是在哪里定义的?

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

【问题讨论】:

    标签: symfony acl


    【解决方案1】:

    此处定义了内置的特殊角色(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]
    

    希望对你有帮助。

    更新#1: 它是用Acl 实现的。您可以根据需要创建许多 acl(例如 ClassClassFieldObject)。 Domain 的每个 Acl 都有一个或多个 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 允许EDITVIEW 这个Domain。但是ROLE_BRONZE 只允许VIEW

    在您的Controller 中,您可以查看权限。详情见example

    更新#2: 要授予某些权限,请使用MaskBuilder

    【讨论】:

    • 谢谢。但是,我仍然不明白角色与权限的关系。例如。您声明 ROLE_BRONZE,例如,它在哪里说明具有 ROLE_BRONZE 的人实际上能够做什么?
    猜你喜欢
    • 2018-06-24
    • 1970-01-01
    • 2021-07-25
    • 2014-10-22
    • 2016-06-20
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    相关资源
    最近更新 更多