2017-01-17 59 views
0

超級角色無法訪問繼承的角色.. ??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捆綁蔭了。

+0

你可以顯示你如何使用is_granted,所以我可以改善我的答案? – OlivierC

+0

我使用security.authorization_checked來查看某個用途是否具有某個角色。 –

回答

1

這是因爲FOSUB hasRole方法會在isGranted檢查特權時明確檢查您是否具有角色。

目前,您擁有ROLE_SALES的權限,但不具有ROLE_SALES本身的權限。這就是爲什麼isRranted工作時hasRole不

+0

哦,好吧謝謝:) –