我正在使用自定义投票器(而不是内置的通用 ACL 系统)构建具有访问控制的 Symfony2 应用程序。检查权限通常如下所示:
$this->isGranted('EDIT', $someObject);
这告诉我当前用户是否可以编辑该对象。但是我应该如何处理检查权限以创建新对象?
假设有一个类似博客的系统。我有类别,有帖子,有评论。我可以通过传入实际对象来检查查看、编辑和删除权限,但是如何检查是否允许用户创建新评论、帖子或类别?
我想对于评论,我可以检查博客文章的 CREATE_COMMENT 权限。对于发布新的博客文章,我可以对照类别检查 CREATE_POST。但是类别之上没有任何内容,那么我将如何/检查什么来创建新类别?
或者,我应该根据对象类型检查它们,而不是检查父对象的 CREATE 权限?例如:
$isGranted('CREATE', 'My\Bundle\Entity\Comment');
这看起来不错,但它没有考虑用户想要评论的帖子。
在尽可能多的框架和语言中有大量的 ACL 系统。通常如何处理对象创建权限?