Symfony Super Roles无法访问Base Roles

时间:2017-01-17 09:48:41

标签: php symfony

超级角色无法访问继承的角色.. ??

这就是我的角色层次结构的样子:

role_hierarchy:
    ROLE_ADMIN:           [ROLE_BACKEND_USER, ROLE_SALES]
    ROLE_SUPER_ADMIN:     ROLE_ADMIN
    ROLE_SALES:           ROLE_USER
    ROLE_BACKEND_USER:    ROLE_USER

当我以ADMIN身份登录时,我可以看到我继承了角色“ROLE_BACKEND_USER”; “ROLE_SALES”和“ROLE_USER”。

但是,虽然我继承了角色,但我无法访问ROLE_SALES。

if(!$this->getUser()->hasRole('ROLE_SALES')) {

 throw new AccessDeniedException('Cannot loggin Need ROLE_SALES ');

}

同样$this->get('security.authorization_checker')->isGranted('ROLE_CARMANDO')确实有用..

P.S:我也使用FOS Bundle。

1 个答案:

答案 0 :(得分:1)

这是因为当isGranted检查权限时,FOSUB hasRole方法检查你明确拥有该角色。

目前,您拥有ROLE_SALES的权限,但不具有ROLE_SALES本身的权限。这就是当hasRole没有

时,isGranted工作的原因