【问题标题】:What is the best way to manage permission with ACL in Symfony 2?在 Symfony 2 中使用 ACL 管理权限的最佳方式是什么?
【发布时间】:2015-07-06 18:36:05
【问题描述】:

我在一个使用 Symphony 2 的项目中工作。这是一个复杂的项目,需要很多安全元素。我正在尝试创建 ACL 以授予或撤销用户权限,但我有一个问题:我不知道如何获取用户的权限。我需要一种管理 ACL 权限的最佳方法。

我需要从模块到数据库中字段的权限级别,并在安全模块中检索此权限。

现在我的系统位于 2 个不同的数据库中,在一个数据库上我无法更改任何内容,另一个数据库包含我所有的安全表和其他内容,但我需要在这些数据库中授予权限。

我正在考虑创建一个外部接口来管理 ACL,但这与创建复制 Symphony 2 ACL 相同。

使用 Symphony 2 在系统中进行权限管理的最佳方式是什么?

我如何检查实体中字段的权限,因为方法 isGranted in twig 我认为这不是最好的方法,因为它会查询每个字段的数据库?

【问题讨论】:

    标签: symfony


    【解决方案1】:

    你需要给用户设置角色,这里都有描述:http://symfony.com/doc/current/book/security.html#roles

    一旦定义了角色,您就可以在访问控制列表中使用它们,或者通过 isGranted 方法在任何控制器/模板中使用它们。这是 SF2 的最佳实践,据我所知 isGranted 方法没有性能问题。

    【讨论】:

      【解决方案2】:

      您可以通过多种方式在控制器中的操作内执行此操作:

      public function helloAction($name)
      {
          if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
              throw $this->createAccessDeniedException();
          }
      
          // ...
      }
      

      树枝内部:

      {% if is_granted('ROLE_ADMIN') %}
          <a href="...">Delete</a>
      {% endif %}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-19
        • 2010-11-19
        • 1970-01-01
        相关资源
        最近更新 更多