8

セキュリティに関する Symfony2の公式ドキュメントから、「従来の」ロール (つまり、ROLE_USER、ROLE_ADMIN など) 以外に新しいロールを定義できることがわかります。

security.ymlでロール階層を作成するために、新しいロールを定義して Symfony2 アプリケーションに登録するにはどうすればよいですか?

皆様お騒がせして申し訳ありませんでした!答えは簡単だと思います。実際、名前をROLE_で開始することで、新しいロールの使用を開始するだけで十分なようです。たとえば、ROLE_NEWS_AUTHORと指定して、その役割を持つ人だけが Web サイトにニュースを挿入できるようにすることができます。

ありがとう。

4

1 に答える 1

16

確かに、ROLE_SOMEROLE で始まる任意のロールを簡単に追加できます。security.yml ファイルには、1.アクセスを制限するための 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
}

これがお役に立てば幸いです。ハッピーコーディング。

于 2012-04-23T10:27:58.353 に答える