2008-10-23 6 views
12

나는 약 1 주일 동안 장고의 내용을 지금 탐구 해왔다. 그러나 필자는 CRUD 인터페이스에 대한 세분화 된 권한 제어와 관련하여 몇 가지 부정적인면을 보았습니다.Django는 권한 기반 웹 응용 프로그램에 적합한 선택일까요?

내가 쓰고있는 것은 인트라넷 클라이언트 관리 웹 응용 프로그램입니다. 조직은 약 6 티어로 티어를 기반으로 클라이언트 그룹에 대한 액세스를 제한해야합니다. 지속적으로 확장. 나는 이것을 어떻게 할 것인지 꽤 좋은 생각을 가지고 있지만, 사전 구축 된 관리 인터페이스에 잘 통합 할 수 있을지 확신 할 수 없습니다.

나는 이것이 전혀 효과가 있는지 없는지에 대해 아마 더 좋은 생각을 가지고있을 것입니다. 그렇지 않으면 절대적으로 0 장고 개발을했습니다. 생성 된 관리 인터페이스가이 프로젝트에서 쓸모 없게된다면 아마 장고를 사용하지 않을 것입니다.하지만 제가 말했듯이, 세밀한 커스텀 권한에 대한 의존도가 높습니다.

Django는 사용자 정의 권한/규칙을 만들고 관리자 CRUD 인터페이스에 완벽하게 통합 할 수 있습니까?

업데이트 1 : 관리자 앱을 사용하여 CRUD 인터페이스 생성의 재연성을 최소화하고 싶습니다. 그렇기 때문에 필자는 반드시 있어야한다고 생각합니다.

업데이트 2 :

이 프로젝트에 필요한 권한을 설명하고 싶습니다.

클라이언트는 하나 이상의 '상점'에 속할 수 있습니다. 정규 직원은 (다른 상점에 속해 있더라도) 상점에서 클라이언트를 편집 할 수 있어야합니다. 그러나 다른 상점의 클라이언트를 보거나 편집 할 수 없어야합니다. 캐주얼 사용자는 자신이 원하는 상점을 기반으로 클라이언트를 볼 수 있어야합니다 (또는 캐주얼이 매장 사용자로 로그인 한 경우 가능성이 높습니다).

위의 관리는 관리하는 매장의 모든 직원을 볼 수 있어야합니다.

고위 경영진은 모든 직원을 편집하고 자체적으로 권한을 부여 할 수 있어야합니다.

django 설명서를 읽은 후 그룹의 하위 집합에 대한 권한을 (자동으로) 설정할 수 없다고 말합니다. 전체 그룹. 이 목적을 위해 자신의 권한을 조롱하는 것만으로도 충분합니까?

답변

7

내가 제대로 업데이트 된 요구 사항을 읽으면, 내가 장고의 기존 인증 시스템이 충분하다 생각하지 않는다 . full-on ACL 시스템이 필요한 것 같습니다.

이 주제는 여러 번 나타났습니다. django + acl에 인터넷 검색을 시도하십시오.

랜덤 샘플링 ...

이 코드 프로젝트의 여름은 몇 년 전,하지만 그들은에있어 어디 모르겠어요. 재미있을 수 djngoproject.org에서 신선한 티켓이 있습니다 http://code.djangoproject.com/wiki/GenericAuthorization

를 참조하십시오

몇 가지 흥미로운 코드가 dumpz에 자르는있다.조직 :

...하지만 제로 문서가 있습니다.

행운을 빈다. http://code.google.com/p/django-granular-permissions/

그것은 장고의 허가 시스템에 행 수준 권한을 추가합니다

3

ModelAdmin 객체가 has_add_permission, has_change_permission, has_delete_permission 및 로그인 한 사용자가보고 수정할 수있는 주변의 권한을 강화하는 데 사용할 수있는 queryset 방법 - 당신이 구현하려는 어떤 권한을 적용하려면 다음을 사용하는 서브 클래스를 만들 수 있습니다 하위 클래스를 사용하여 모든 모델을 admin 응용 프로그램에 등록하십시오.

그러나 사용 권한 시스템이 얼마나 정확하게 작동하는지에 따라 다릅니다. 정확한 요구 사항은 무엇입니까? admin 응용 프로그램이 의도 한 것에서 멀어 질수록 더 많은 작업을 수행 할 수 있지만 사용자 정의 요구 사항을 구현하는 데 사용할 수있는 많은 고리가 있습니다. blog post from Luke Plant은 너무 깊게 파지 않고도 할 수있는 미세 조정의 예를 보여줍니다.

admin 응용 프로그램을 기반으로해야합니까?Generic viewsModelForms은 CRUD 구현과 관련된 많은 지루한 부분을 처리 할 수 ​​있으므로 be waryadmin 사용자 정의에 너무 익숙해졌습니다. admin 앱에 매달려서 시작하는 장고 전통과 거의 같습니다. 처음에는 코드를 다시 작성할 필요가 없다고 생각합니다.)

+0

많은 작업이 이미 관리 응용 프로그램으로 완료되었습니다. 많은 생산성이 발생합니다. 나는 누가 무엇에 접근 할 수 있는지를 강요하는 방법이 필요하다. 예를 들어 위의 내 업데이트를 참조하십시오. –

5

장고 권한 시스템은 전적으로 규칙을 따릅니다. 각 모델에는 기본 사용 권한 집합이 있습니다. 모델에 새 권한을 추가 할 수도 있습니다.

각 사용자는 그룹 구성원 자격과 권한 집합을 가지고 있습니다. 개별 사용자는 개별 권한을 가질 수 있습니다. 또한 그룹 구성원으로부터 권한을 상속받습니다.

뷰 기능 (및 템플릿)은 사용 권한이 필요한 수준에서 이러한 사용 권한이 없음을 쉽게 확인할 수 있습니다.

그리고이 당신을 위해 충분하지 않은 경우 프로필에 추가 기능 아직 등

"사용자"과 기능, 권한, 역할, 책임, 정의 그리고이 ISN 경우 더 많은 옵션을 제공

당신 만의 충분한 인증 체계를 정의 할 수 있습니다. 중요한 무엇


시도하고 사용자가 아닌 부담 정의 제목 또는 역할의 실제 하위 집합 그룹을 정의하지 않는 것입니다. "그룹의 하위 집합에 대한 사용 권한을 설정"할 필요가 없습니다. 당신은 더 작은 그룹이 필요합니다. 그룹은 사람들의 서브 세트 주위에 정의됩니다.

장고의 기본 사용 권한은 모델 액세스에 있으며 모델에서의 행 액세스는 아닙니다. 반면에 문제는 여러 모델 (클라이언트, 저장소, 직원, 관리자)의 하위 집합에 대한 것입니다.

이러한 항목 중에는 기본 FK가 필요하며 행을 부분 집합하려면 일부 필터가 필요합니다. 기본 관리자 페이지에서이 작업을 수행하는 데 문제가있을 수 있습니다. 특별한 필터를 사용하려면 관리자 버전이 필요할 수도 있습니다.


장고 권한 시스템으로는 불가능한 경우 유스 케이스를 다시 생각해보아야합니다. 진지하게.

는 [장고 - REST 인터페이스는, 그러나, 또 다른 짐승 완전히, 그리고 약간의 관심과 공급이 필요합니다.]

0

은 또한 세분화 된-권한 monkeypatch 좀보고 할 수 있습니다.

2

django 1.2부터는 행 수준 권한에 대한 지원이 있습니다. django-guardian은 매우 직관적으로 처리 할 수 ​​있습니다.

관련 문제