基于动态角色和权限的Symfony复杂访问控制列表(ACL)

3
我希望构建一个系统,该系统具有多个用户,每个用户可以被分配到0到多个项目或项目部分(对象)的角色。每个角色可以拥有1到多个权限。角色可以动态创建,因此可以将它们分配给用户。 然而,权限可以硬编码。
我知道我应该使用ACL,但是我不确定如何在Symfony2中添加动态角色。另外,我应该使用投票者吗?

你是否有用户表和角色表,并且在实体中定义了它们之间的关系?你想要自动将角色添加到用户中,还是通过 ACL 将角色授予特定对象? - Javad
@Javad 是的,我有用户和角色表,我想通过ACL将角色授予特定对象,而不是直接授予权限。 - mokha
我在下面提供了一个答案,希望它能解决你的问题。 - Javad
1个回答

1
希望下面的代码能够帮到你。
// creating the ACL
$aclProvider = $this->get('security.acl.provider');
$objectIdentity = ObjectIdentity::fromDomainObject($the_object_to_be_granted);
$acl = $aclProvider->createAcl($objectIdentity);

$securityIdentity = new RoleSecurityIdentity("CUSTOM_ROLE_YOU_HAVE");

// grant owner access
$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);// This is sample you can use any other masks you need
$aclProvider->updateAcl($acl);

您可以通过以下链接获得更多信息(Symfony ACL


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接