2

Django 1.3 및 Python2.6을 사용하는 웹 응용 프로그램에서 작업하고 있습니다. 장고 사용자 모델을 확장하여 세 가지 유형의 사용자가 있고 각 유형에 대한 사용 권한을 관리해야합니다.Django 사용자 모델을 확장하여 권한을 관리하는 방법

설명하기 위해 사용자의 유형에는 교수진, TA와 학생의 세 가지 유형이 있습니다. TA는 새로운 '과제'를 만들 수있게되며, 교수진은 '검토'및 확인을 할 수있게되며, 학생들은 '검토'해야 할 '솔루션'을 제출하고 TA는 최종적으로 '검토 된'솔루션을 확인할 수 있습니다. 이제 구체화 및 등급 솔루션을 만들 수있는 사람 TA, 확인을 위해 과제 및 솔루션을 검토 할 수있는 Faculty 및 솔루션을 제출할 수있는 사람 Students의 세 가지 유형의 사용자가 있습니다.

이제 사용자 모델을 확장하는 데 두 가지 방법이 있다는 것을 알고 있습니다. UserProfile을 만들고 'user_type'이라는 필드를 추가 할 수 있습니다. 다른 방법은 User 모델을 서브 클래 싱하는 것입니다. 하위 분류는 다른 유형의 사용자에 따라 다른 필드가있는 더 나은 접근 방식이라고 생각합니다.

단일 로그인 양식을 갖지만 다른 유형의 사용자에 대해 다른 등록 양식을 가질 수 있습니다. 왜 접근법 중 하나를 선택하겠습니까?

다른 유형의 사용자에 대한 사용 권한을 관리하는 가장 좋은 방법은 사용자 그룹을 사용하는 것입니다. 그룹을 만드는 방법, 사용자가 그룹에 속하는지 확인 하시겠습니까? 사용자 모델을 확장하는 방법의 선택이 사용 권한을 관리하는 방식에 영향을 줍니까?

답변

1

하위 클래스를 만들면 기본 클래스가 자동으로 인스턴스화되므로 더 편리합니다. 프로필 클래스를 만들면 두 클래스를 모두 수동으로 인스턴스화해야합니다.

단순한 경우 작업을 허용하기 전에 사용자 유형을 확인해야 할 수도 있습니다. buildt-in permissions backends of Django을 사용할 수 있습니다.

프로필 클래스를 하위 클래스로 만들거나 만들 때 그룹 작업 과정에 많은 영향을 미치지 않습니다. 그룹과 사용자간에 항상 ManyToMany 관계가 있습니다. 그러나 UserProfile과 Group 사이에서보다 User 클래스와 Group 클래스 사이에 만드는 것이 좋습니다.

당신이 더 큰 프로젝트를 계획, 내가 권한 프레임 워크를 정의하는 무슨에 대한 간단한 설명을 제공 할 수 있습니다 : (액세스하거나 편집 뭔가 사용자 또는 그룹을 만들려고)

    • 주제를 객체 (작업의 대상)
    • 소유자 (개체의 소유자)
    • 역할
    • 허가 (규칙 정의 (피사체와 개체 또는 개체의 소유자 사이의 관계) 어떤 역할이 어떤 행동을하도록 허용되는지)
  • 관련 문제