学说:一对一的关系?

时间:2012-05-22 14:16:56

标签: php symfony doctrine entities database-relations

我正在为工作中的Symfony2项目制作实体。

我正在尝试建立一个系统来控制对组织(公司)和角色的某些资源的访问。总而言之,所有公司的角色都是相同的,但公司可能会为某个角色提供资源,而另一个公司可能不想这样做。

至于资源,它们代表一些行动和内容,例如创建它,版本等等......

我尝试用以下实体解决这个问题。它代表了我的三个实体组织,角色和资源之间的一对一关系。

我想知道这种关系是否可能/好,或者是否有另一种方法来管理资源。

/**
 * @ORM\Entity
 */
class Organisation_Role_Resource
{
    /**
     * @ORM\Id
     * @ORM\ManyToOne(targetEntity="Aurae\UserBundle\Entity\Organisation")
     */
    private $organisation;

    /**
     * @ORM\Id
     * @ORM\ManyToOne(targetEntity="Aurae\UserBundle\Entity\Role")
     */
    private $role;

    /**
     * @ORM\Id
     * @ORM\ManyToOne(targetEntity="Aurae\UserBundle\Entity\Resource")
     */
    private $resource;

关于如何解决这个问题,你有什么建议吗?

是否有其他/更好的方式来表示资源(实际上是页面和链接)并管理其访问权限?

1 个答案:

答案 0 :(得分:1)

虽然这可能是非常有效的方法,但你真的会重新发明轮子。

Symfony2已全部实施为“访问控制列表”或( ACL ):

http://symfony.com/doc/current/cookbook/security/acl.html

检查出来......我认为它涵盖了你需要的一切......