0

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

我该怎么做?

4

2 回答 2

0

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

更新:我明白了......显然安全系统调用hasCredential()了用户对象的方法。也许您可以在自定义用户类中扩展此方法,以便它在其参数为例如“article_owner”时进行特殊检查。

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

于 2010-11-21T15:51:22.680 回答
0

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

protected function hasObjectAccess($obj) {
    if ($this->getUser()->hasGroup('admin')
        || $obj->getOwnerId() == $this->getUser()->getId()))) {
      return true;
    }
    return false;
}
于 2010-11-21T21:16:08.480 回答