Symfony对CRUD操作的访问限制

时间:2010-11-21 15:40:15

标签: php symfony1 symfony-1.4 symfony-forms

我只有symfony生成的CRUD函数。 有文章类和文章所有者。 我想阻止其他用户而不是当前文章的所有者tu编辑它。 我正在考虑定制我自己的过滤器或验证器但是当我将实现验证器时,一些用户可以进入编辑表单(他们不仅可以发送它)。 但是当我实现用户过滤器时,只有在某些操作之前才会执行过滤器(在这种情况下进行编辑)会有问题。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

我认为这是内置的。您应该阅读security.yml文件。

更新:我看到......显然是安全系统calls the method hasCredential() of the user object。也许您可以在自定义用户类中扩展此方法,以便在其参数为“article_owner”时进行特殊检查。

完成此操作后,您所要做的就是为您想要的操作指定此凭据

答案 1 :(得分:0)

我认为symfony不支持开箱即用的对象级访问控制。我在我的一个应用程序中遇到了这个特殊问题,最后我明确检查了登录用户是否与编辑操作中的所有者匹配。这是我用过的功能:

protected function hasObjectAccess($obj) {
    if ($this->getUser()->hasGroup('admin')
        || $obj->getOwnerId() == $this->getUser()->getId()))) {
      return true;
    }
    return false;
}