2012-02-17 20 views
0

私のプロジェクトには多くの役割があります:admin、HR、manager、employee。 Symfony2で一般的な方法で実装するにはどうすれば新しい役割を将来追加することができますか?symfonyでの役割に関連する問題

答えて

2

Symfony2は、UserInterfaceインターフェイスを使用して認証されたユーザーを表します。

このインターフェイスは、ユーザが持つすべてのロールを返すgetRolesメソッドを実装するように要求します。

このUserInterfaceの実装方法に基づいて、これらのロールをデータベース、Webサービスなどから取得できます。

# app/config/security.yml 
security: 
    # ... 
    providers: 
     in_memory: 
      users: 
       ryan: { password: bb87a29949f3a1ee0559f8a57357487151281386, roles: 'ROLE_USER' } 
       admin: { password: 74913f5cd5f61ec0bcfdb775414c2fb3d161b620, roles: [ 'ROLE_ADMIN', 'ROLE_RH'] } 

もう一つの方法は、EntityProviderを使用することです。これらのユーザーに提供する

1つの簡単な方法は、in-memoryプロバイダです。詳細はcookbook entryをご覧ください。

この最後の例では、ユーザーの役割は、ハコードされた配列に静的に格納されていますが、テーブルの関連付けを使用して別のテーブルから取得できます。それはFOSUserBundleで行われます。

あなたも、ロール階層を定義することができます。

# app/config/security.yml 
security: 
    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

だから、役割ROLE_ADMINを持つ任意のユーザーでも役割ROLE_USERを継承していること。

詳細はthe docsをご覧ください。

関連する問題