2014-12-03 2 views
6

나는 "파워"가 다른 여러 종류의 사용자가 필요한 프로젝트를 시작하려고합니다.Symfony2 인증 : 유권자 대. ACL

약간의 컨텍스트를 제공하기 위해 1000 명에서 10000 명 사이의 사용자가 필요합니다.

나는 적어도 3 "층"이 : A, B, C

"A"여러 프로젝트 "C"와 다른 클라이언트 "B"와 "컨설팅 회사", 각 각 수 있습니다.

한 사용자는 회사 "A"가 관리하는 모든 프로젝트의 개요를보아야 할 수도 있습니다. "B"회사 중 하나의 또 다른 회사입니다. 또 다른 프로젝트 "A". 일부 사용자에게는 각 레벨마다 세밀한 세부 묘사가 부여 될 수 있습니다 (사용자가 "B"레벨에서 세분화 된 레벨을 가지고 있지만 "A"레벨에서 아무것도 볼 수없는 경우 일 수도 있음). 일부 사용자에게는 읽기 권한 만 있고 다른 사용자에게는 읽기 및 수정 권한이 있고 다른 사용자에게는 읽기 권한, 수정 권한 및 생성 권한 만 있습니다.

결국에는 내가 읽기/쓰기/삭제/수정 권한을 부여해야하는 100,000 또는 100 만 "개체"로 끝날 수도 있습니다.

비교적 간단한 유권자 시스템 또는 본격적인 ACL 중 하나를 선택해야합니다. ACL이 꽤 강력 함에도 불구하고 잘 설명되어 있지 않다는 것을 알았습니다. 나는 유권자들을 거의 버렸지 만, 나는 내 마음을 바꾸게 해주는 this article을 읽었다. 기사에서 따옴표 :

이것은 일반적으로 ACL에 대해 이야기 할 때 생각합니다. "이 사용자"가 "개체"를 "편집"할 권한이 있다고 말할 수있는 기능입니다. Symfony2에서 사용자 정의 유권자를 활용하여 복잡한 비즈니스 로직을 결정할 수 있습니다.

당신이 유권자를 사용할 수있는 기사에 따르면이 같은 :

isGranted의 또 다른 일반적으로 알 수없는 속성은 "개체"

모든 유형의 제 2 인자가 있다는 것입니다

내가 노출 한 문맥을 고려한 나의 질문은 다음과 같습니다.

1) 유권자 옵션을 통해 필요한 유연성을 얻을 수 있습니까?

2) 안전하게 사용할 수 있습니다, 확인 성능이 현명한 (ACL 특별히 성능에 부패가 없더라도 객체의 수백만, 나는 유권자을 선택하면 유권자에 의심)

3)를 가지고 있음을 명시 할 것 FOSUserBundle, Symfony 1.2와 관련된 내용이 지정 되었더라도?

답변

7

아마도 유권자를 사용해야 할 것입니다. 2012 년 바르샤바의 SymfonyCon에서 좋은 이야기가있었습니다. https://www.youtube.com/watch?v=e7HfW4TgnUY

1) 유권자는 필요한 모든 유연성을 부여합니다. 유권자를 서비스 (link)로 등록하면 유권자 EntityManager, Doctrine Registry, EntityRepository 또는 원하는 모든 서비스를 전달할 수 있습니다.당신이 할 수 물론

2) 매우 흥미로운 일이 될 수있는이 원인 그것은 아마 현명한 perfomance되지 않지만 측정하고 처음 어떻게 든 프로필한다 (일부 블로그 게시물을 공유)

3). Symfony 1.2와 호환 되나요? Symfony 2.1을 의미합니까? FOSUser가 symfony의 모든 최신 버전을 지원한다는 것을 packagist에서 확인하실 수 있습니다 :)

+0

Thank you! 비디오에서 역할 유권자가 갈 방법이 분명하다.) –

+0

당신의 의견과 관련하여 3) 나는 1.2를 의미했다 (github (https://github.com/FriendsOfSymfony/FOSUserBundle)에서 다음의 "주의 :이 번들은 symfony의 저장소와 동기화되어 개발되었습니다 .Symfony 2.0.x의 경우에는 번들 (또는 그 이하)의 1.2.0 버전을 사용해야합니다. "3 번 질문에서 제공 한 링크를 자세히 확인해야합니다 , 실제로는 userbundle의 업데이트 버전 인 것 같습니다. –

+0

FOSUserBundle을 구현했으며 참으로 매력적이었습니다. 팁 @ I3I0 덕분입니다! –