试图低估symfony RoleHierarchy

时间:2017-01-18 06:33:25

标签: symfony symfony-security

我正在阅读Symfony Security模块中的RoleHierarchy类,并尝试理解以下代码:

  public function getReachableRoles(array $roles)
    {
        $reachableRoles = $roles;
        foreach ($roles as $role) {
            if (!isset($this->map[$role->getRole()])) {
                continue;
            }

            foreach ($this->map[$role->getRole()] as $r) {
                $reachableRoles[] = new Role($r);
            }
        }

        return $reachableRoles;
    }

文档说的是这样的:

  

返回给定角色的所有可到达角色的数组。

     

可访问角色是直接分配的角色,但也包括所有角色   在角色层次结构中可以从它们传递到的。

让我说我有

 $role = new RoleHierarchy(array(
        'ROLE_ADMIN' => array('ROLE_USER'),
        'ROLE_SUPER_ADMIN' => array('ROLE_ADMIN', 'ROLE_FOO'),
    ));

根据函数描述(据我所知),下面的测试可能会失败,但它不会因为函数本身似乎返回与参数传递相同的值,如果它没有在map数组中找到角色。

$this->assertEquals([new Role('ROLE_BAR')],$role->getReachableRoles([new Role('ROLE_BAR')]));

所以我的问题是为什么它甚至不验证ROLE_BAR存在或在角色层次结构图中定义,或者我可能没有得到函数描述或缺少角色如何工作的其他方面。我目前的理解是(可能是错误的),要使角色成为有效角色,它应该在角色层次结构中定义。

0 个答案:

没有答案