私は、アクセス制御リストがSymfony2で実装される方法に少し戸惑っています。 Zend Frameworkの(バージョン1 & 2)symfony2のロール/リソースACLを実装する方法
、リソースとロールのリストのリストが定義され、各役割は、アクセスを許可のリソースのサブセットを割り当てられます。したがって、リソースと役割はACL実装の主な用語ですが、Symfony2ではそうではありません。
レガシーアプリケーションデータベースでは、ロールのリスト、リソースのリスト、および各ロールの許容されるリソースのリスト(多対多の関係)を定義するテーブルがあります。各ユーザーには役割(管理者、スーパー管理者、編集者など)が割り当てられます。
このデータベースをSymfony2アプリケーションで使用する必要があります。 symfonyにおいて私User
エンティティがSymfony\Component\Security\Core\User\UserInterface
インターフェイスを実装し、それゆえgetRoles)
方法を持っているARTICLE_EDIT、ARTICLE_WRITE、COMMENT_EDITなど
: 私のリソースは次のようになります。
私はこのメソッドを使用して許可されたリソースを定義します。つまり、私はリソースとしてロールを使用します(Zend Frameworkのリソースはここではロールと呼ばれます)。
この方法を使用する必要があることを確認しますか?
これは、各ユーザーの役割(管理者、編集者、...)については気にしなくても、そのリソースについてのみです。
私はコントローラに$this->get('security.context')->isGranted('ROLE_ARTICLE_WRITE')
を使用します。
これは正しい方法ですか?Symfonyで役割を使うのを回避する方法ではありませんか?