2012-03-08 5 views
7

현재 장고에서 액세스 제어를 구현하고 있습니다. 기본 제공 권한에 대해 읽었지만 개체별로 처리하지 않습니다. 예를 들어 "작성자 만 자신의 항목을 삭제할 수 있습니다"와 같은 권한을 원합니다. 그래서 장고 보호자에 대해 읽었습니다. 그런 다음 다시 생각해 보면 제약 조건이 변경되는지를 관리하고 확인하는 것이 어려울 수 있습니다.django - django 권한을 비교하고 django 규칙을 사용합니다.

다음 인기있는 django-permission 관리 앱을 살펴 봅니다. 이것은 내가 원하는 것에 맞게 보입니다. 그러나, 장고 규칙은 모델 인스턴스가 포함되어야한다고 (그러므로 객체 레벨), 즉 "멤버의 영역"과 같은 간단한 뷰가 필요한 경우이 함수를 수행하지 않습니다.

이로 인해 나는 후자의 시나리오에 대한 contrib의 허가와 전자에 대한 django-rules 모두를 사용하는 것에 대해 생각하게되었습니다. 내 질문에, 그것은 두 가지 권한 프레임 워크를 모두 관리하는 것이 얼마나 쉬운가?입니다. 예를 들어, 사용자 그룹이 다릅니다. 관리자가 관리 시스템에 특정 권한을 추가하여 (보기에 대한 액세스를 허용하기 위해) 충분해야한다고 생각하지만 규칙에 의해 설정된 제약 사항에 의해 제한되는 것으로 판명되는 중복되는 시나리오에 대해 걱정합니다.

나는 이것이 일반적인 경우라고 생각하며 귀하의 경험을 바탕으로 조언과 권장 사항을 겸허하게 찾습니다.

+0

장고 규칙에는 모델 인스턴스가 필요하지 않습니다. 모델 인스턴스는 선택 사항입니다. –

답변

1

장고 관리 사이트에서이 작업을 수행하는 경우 has_delete_permission()과 같은 메소드를 재정의 할 수 있습니다. 이것들은 요청과 객체를 인자로 가지므로 "사용자 X는 그 자신의 객체 만 지울 수 있습니다"와 같은 규칙을 설정하는 데 사용할 수 있습니다.

+0

관리자 사이트 전체가 아니지만 어쨌든 감사합니다. 그 방법을 알아 채지 못했다. – goh

+0

자신의 코드를 통해이를 수행하려면 user_can_delete (self, user)와 같은 메소드를 모델에 추가하고 코드에서 사용할 수 있으며 has_delete_permission() 관리 메소드에서도 사용할 수있다. . – che

관련 문제