2012-12-05 2 views
0

액세스 제어 목록이있는 Symfony2에서 액세스 제어를 모델링하고 싶습니다. 사용자는 클래스 범위 액세스를 허용하는 역할이 다르지만 개체 범위 액세스 권한도 가질 수 있습니다. 기본 예 : 관리자 역할은 모든 주석을 편집 할 수 있으며 사용자는 자신의 주석을 편집 할 수 있습니다.ACL 클래스 범위와 객체 범위를 동시에 확인하십시오.

이제 문제는 권한을 확인하고 있습니다 : 순간에 그것은 단지 클래스 중 검사 또는 범위 객체입니다

$securityContext->isGranted('EDIT', $identity)

identity

중 하나

new ObjectIdentity('class', 'Acme\\BlogBundle\\Document\\Comment')

또는를 comment 개체 자체.

나는 투표자가 comment 개체가 분명히 자체 클래스를 제공한다는 사실에 기반하여 클래스 범위와 개체 범위 액세스를 모두 확인한다고 생각했습니다. 이제 어떻게 구현할 것인가? 맞춤 투표자를 만드시겠습니까? 아니면 완전히 다른 것을 놓치고 있습니까?

전자 : "어떤 것도 적용하지 않는 경우 모든 객체 범위는 에이스 PermissionGrantingStrategy 먼저 확인은 클래스 범위 ACE를 체크한다": 워드 프로세서 말 http://symfony.com/doc/current/cookbook/security/acl_advanced.html

그래서이 경우에는 분명히 의미 오브젝트 스코프의 경우, 클래스 스코프는 전혀 고려되지 않습니다. :(

답변

2

음은 클래스 범위를 작성, 나는

$acl->insertClassAce($securityIdentity, MaskBuilder::MASK_OWNER); 

대신이이 표준 MySQL의 구현에서 일하게 ->insertObjectAce(...

사용해야하지만, IamPersistent/MongoDBAclBundle 버그 곳이있다 acl_entry와 클래스 범위 acl_oid 사이에 링크가 없으므로 클래스 스코프가 투표하는 동안 $ acl에 나타나지 않습니다.

관련 문제