【问题标题】:Managing permissions method in Symfony2Symfony2 中的权限管理方法
【发布时间】:2014-12-15 15:57:06
【问题描述】:

我正在创建一个有用户的 Symfony2 网站,每个用户都可以拥有多个权限,如下所示:

User1: manage users , manage sales , manage repository
User2: manage repository
user3: manage sales , manage repository
...

对于这样的系统,使用什么正确的权限系统?
RolesACLsvoters 或其他什么?

谢谢

【问题讨论】:

    标签: php symfony user-permissions symfony-security


    【解决方案1】:

    角色

    如果你想授予“general”权限,角色是可以的。

    例如,如果您需要用户能够管理所有或用户,那么您可以为其创建一个角色,例如ROLE_USER_MANAGER。或者,如果您想授予他管理销售的权限,您可以授予他ROLE_SALES_MANAGER 角色。

    所以基本上,当您对某些实体拥有有限数量的权限时,基本上可以使用角色

    可以通过授予包含实体名称和 id 的角色(例如 ROLE_MANAGER_REPOSITORY_23)将它们用于其他用途,然后使用自定义投票器,您可以知道具有该角色的用户可以使用 id 管理存储库23. 虽然这种方法可行,但我个人并不喜欢。

    ACL

    如果您有很多动态权限授予,尤其是针对单个模型,那么 ACL 是您的最佳选择。它通常性能稍差,因为它需要从数据存储中获取更多数据,但更适合此目的。

    使用Symfony2 ACL,授予和检查权限非常容易,甚至允许各个用户相互授予权限。

    此外,Symfony ACL docs 的介绍部分向您展示了这两种方法,并指出了每种方法的一些优缺点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-28
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2023-03-18
      相关资源
      最近更新 更多