アクセス制御リストを使用して、Symfony2 でアクセス制御をモデル化したいと考えています。ユーザーには、クラス スコープ アクセスを許可するさまざまなロールがありますが、オブジェクト スコープ アクセスも許可されます。デフォルトの例: admin ロールはすべてのコメントを編集でき、ユーザーは自分のコメントを編集できます。
問題はパーミッションのチェックです。現時点では、クラスまたはオブジェクト スコープのいずれかのみがチェックされます。
$securityContext->isGranted('EDIT', $identity)
identity
どちらかはどこですか
new ObjectIdentity('class', 'Acme\\BlogBundle\\Document\\Comment')
またはcomment
オブジェクト自体。
comment
オブジェクトが明らかに独自のクラスを提供するという事実に基づいて、有権者はクラス スコープとオブジェクト スコープ アクセスの両方をチェックすると思いました。では、これを実装するにはどうすればよいでしょうか。カスタム有権者を作成しますか? それとも、何か他のものを完全に見逃していますか?
e: ドキュメントには次のように書かれています: 「PermissionGrantingStrategy は最初にすべてのオブジェクト スコープの ACE をチェックし、該当するものがない場合、クラス スコープの ACE がチェックされます」: http://symfony.com/doc/current/cookbook/security/acl_advanced. html
つまり、オブジェクトスコープがある場合、クラススコープはまったく考慮されないということです。:(