2012-04-23 8 views
7

公式Symfony2 doc on Securityから、 "古典的な"役割(ROLE_USER、ROLE_ADMINなど)以外に新しい役割を定義できることが分かります。symfony2で新しい役割を作成して登録する方法

にはどうすれば新しい役割を定義し、のsecurity.ymlでの役割の階層を作成するために、私のSymfony2のアプリケーションにそれらを登録することができますか?

あなたを気にして申し訳ありません!答えは簡単だと思います。実際には、ROLE_で名前を開始することで、新しい役割の使用を開始するだけで十分であると思われます。たとえば、ROLE_NEWS_AUTHORと言って、その役割を持つ人々だけがニュースをウェブサイトに挿入できるようにすることができます。

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

答えて

13

確かにあなたは、単にROLE_SOMEROLE.Inのsecurity.ymlファイルで始まるすべての役割を追加することができますmemebersが

アクセスすることができますアクセス2を1.limitするために、2つの主要部分があります。 access_control:パターンを制限し、誰がアクセスできるのかを指定します。 b。 role_hierarchy:ここでは、ロールの階層構造です。以下の例では、管理ユーザー(ROLE_ADMIN)はロールROLE_USER、ROLE_NEWS_AUTHORを持ちます。だから彼はUSERとNEWS_AUTHORのすべてのページにアクセスできます。お使いのコントローラで

access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }/login any one can access this pattern 
     - { path: ^/admin/, roles: ROLE_ADMIN }//block all pattern /admin/anything* 
     - { path: ^/news/, roles: ROLE_NEWS_AUTHOR } //block all pattern /news/anything* 
role_hierarchy: 
     ROLE_ADMIN: [ROLE_USER,ROLE_NEWS_AUTHOR] 

あなたは役割を確認することができ、

if(TRUE ===$this->get('security.context')->isGranted('ROLE_ADMIN')) 
{ 
    // do something related to ADMIN 
} 
else if(TRUE ===$this->get('security.context')->isGranted('ROLE_NEWS_AUTHOR')) 
{ 
    // do something related to News Editor 
} 

が、これはあなたのお役に立てば幸いです。 HAppyコーディング。

+0

お寄せいただきありがとうございます。 – JeanValjean

+0

また、役割の名前は常に「ROLE_」で始まる必要があります。そうしないと、Symfonyはそれらを認識できません。 – DarksteelPenguin

関連する問題