2012-01-19 16 views
12

私はsymfony2の役割階層を使用していますが、それはうまくいきますが、いくつかの変更を行うためには、をsecurity.ymlに設定する必要があります。symfonyでの役割の階層構造を取得する方法

role_hierarchy: 
ROLE_USER: [ROLE_ACCESS_USER, ROLE_ACCESS_DATA, ROLE_ACCESS_PRODUCT] 

どのように私はROLE_USERROLE_ACCESS_USER, ROLE_ACCESS_DATA, ROLE_ACCESS_PRODUCTで作られているというのが私のコードで知ることができ、ちょうどROLE_USERを返すgetRoles()を使用していますか?

ありがとうございました。

+0

何をそれを必要とします:


あなたは次の行を追加することによって、あなたのconfig/services.ymlsecurity.role_hierarchyのエイリアスを追加する必要がSymfony4のとおり

? –

+0

私の "user"(ROLE_USER)はデフォルトのロールセットを持っているので、私は管理者に特定のロール、例えばROLE_ACCESS_DATAだけを与えることを許可します。私はすべての既存の役割を示すインターフェースを介してそれをしたいと思います。 – linibou

答えて

34

あなたがコンテナから階層を取得することができます。

$container->getParameter('security.role_hierarchy.roles') 
+0

完璧なおかげで多く:-) – linibou

0

をあなたの役割を正確に表現するために、あなたは再帰を必要とします。ロールは他のロールを拡張することができます。ここで

は例です:有効な自動配線でhttps://stackoverflow.com/a/36900807/3635680

+0

あなたの答えに関連するテキストを引用してください。リンクがスタックオーバーフローにつながる場合でも、リンクのみの回答を投稿することはお勧めしません。 –

0

、あなたはまた、直接グローバルロール階層で満たさRoleHierarchyオブジェクトを注入することができます。 は、単に依存性注入を使用して、コントローラやサービスにRoleHierarchyInterfaceを挿入:

use Symfony\Component\Security\Core\Role\RoleHierarchyInterface; 

// ... 
public function __construct(RoleHierarchyInterface $roleHierarchy) 
{ 
    $this->roleHierarchy = $roleHierarchy; 
} 

注:これも、あなたの場合に有用であり得るRoleHierarchyオブジェクト、上getReachableRoles()を呼び出すことができます。

services: 
    # creating alias for RoleHierarchyInterface 
    Symfony\Component\Security\Core\Role\RoleHierarchyInterface: '@security.role_hierarchy' 
関連する問題