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