0

我想在 Symfony2 中使用访问控制列表对我的访问控制进行建模。用户具有允许类范围访问的不同角色,但他们也可以具有对象范围访问。默认示例:管理员角色可以编辑所有评论,用户可以编辑自己的评论。

现在问题是检查权限:目前只检查类或对象范围:

$securityContext->isGranted('EDIT', $identity)

identity要么在哪里

new ObjectIdentity('class', 'Acme\\BlogBundle\\Document\\Comment')

comment对象本身。

我认为选民会检查类范围和对象范围的访问,基于comment对象显然提供自己的类这一事实。现在我将如何实施呢?创建自定义选民?还是我完全错过了其他东西?

e:文档说:“PermissionGrantingStrategy 首先检查所有对象范围的 ACE,如果不适用,则将检查类范围的 ACE”:http://symfony.com/doc/current/cookbook/security/acl_advanced。 html

所以这显然意味着如果存在对象范围,则根本不考虑类范围。:(

4

1 回答 1

2

好吧,创建一个类范围,我应该使用

$acl->insertClassAce($securityIdentity, MaskBuilder::MASK_OWNER);

代替->insertObjectAce(...

这使得它可以在标准的 MySQL 实现中工作,但是 IamPersistent/MongoDBAclBundle 有一个错误,即 acl_entry 和类作用域 acl_oid 之间没有链接,这导致类作用域在投票期间永远不会出现在 $acl 中。

于 2012-12-06T13:26:00.917 回答