Symfony2 ACL 问题

Posted

技术标签:

【中文标题】Symfony2 ACL 问题【英文标题】:Symfony2 ACL problems 【发布时间】:2012-02-16 18:32:17 【问题描述】:

我一直在尝试在我正在开发的系统中实现 ACL,并且 有几个问题。这主要是因为完全缺乏 有关该主题的文档。如果我们能有那就太好了 有关这个复杂和基本组件的更多信息。无论如何,我会 一旦我理解了就很乐意写一些东西

无论如何,我遇到的问题如下: 1. 我拥有 Class-Field-Scope ACE 的角色来查看和编辑字段 的一个对象。当我使用这个签入视图时: isGranted('VIEW', object, 'myField')

它总是错误的。类范围不应该适用于所有实例 班级?我不太确定这个范围是如何工作的。

    当我删除一个组时,我想删除所有相关的 ACL 条目 那个组。我试过这样: $aclProvider->deleteAcl(ObjectIdentity::fromDomainObject($group))

它有效。然后我尝试创建一个新组。组被创建, 但 ACL 设置失败并出现此错误:

注意:未定义的偏移量:Project/vendor/symfony/src/Symfony/ 中的 0 组件/Security/Acl/Dbal/MutableAclProvider.php 第 850 行

非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

编辑:我已经更新了源代码,现在这是一个更好的解决方案。

我最近一直在尝试 ACL 和 Symfony2。

根据我的发现这是检查类字段范围的方法

$post = $postRepo->findOneById(1);

$securityContext = $this->get('security.context');
$oid = new ObjectIdentity('class', 'Liip\\TestBundle\\Entity\\Post');

$object = new FieldVote($oid, 'id');
if (true === $securityContext->isGranted('EDIT', $object))
   echo "Access to 'id' field granted";
else
   echo "Access denied";


 $object = new FieldVote($oid, 'post');
 if (true === $securityContext->isGranted('VIEW', $object))
 
    echo "Access to 'post' field granted";
 else
    echo "Access denied";
 

关于删除 ACL 我目前还不知道,我需要稍后再研究一下。我希望这会有所帮助!

有关该主题的更多信息。可能不适合您,但对其他用户可能会有所帮助:Smyfony2 and ACLs

问候 重做

【讨论】:

这对您没有帮助?请告诉我!

以上是关于Symfony2 ACL 问题的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 ACL 结合另一个条件

如何在 Symfony2 中制作高级 ACL?

为啥 Symfony2 ACL 使用用户名而不是 ID?

Symfony2:如何获取标记有“编辑”ACL 权限的一种类型的所有实体?

为啥 symfony2 安全选民总是被召唤?

Symfony 2 ACL 与选民