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