2010-02-18 4 views
0

저는 SAAS를 개발하고 있으며 내 머리를 감싸는 데 열심히 노력하면서 왜 자신이 아닌 다른 사용자에게도 "사용자"를 사용해야 할 필요가 있습니다. 왜 그런지는 모르겠지만 전체 소프트웨어의 개발자/관리자로서 Django 관리자의 액세스 권한 (Sauron의 눈과 같음)과 동일한 유형의 사용자 객체가 "Account "소유자의"UserProfile "이 있습니다. 왜 이것이 필요한지 이해하도록 도와주세요.Django : 사용자 정의 AUTH 시스템을 사용하면 왜 사용자 모델이 항상 필요합니까?

예 : 내 계정 소유자 '사용자'기능을 내장 관리 기능을 어울 것 같은

class Account(models.Model): # represents copporate customer 
    admin = models.ForeignKey(User) 
    # other fields ... 

class UserProfile(models.Model): 
    user = models.ForeignKey(User) 
    account = models.ForeignKey(Account) 

느낀다. 이것은 request.user 등의 요소를 재사용하기위한 목적인가요?

답변

1

글쎄, 코드와 기능의 재사용은 부작용이 될 수 있지만 근본적으로 이것이 부러 졌다고 생각하지 않습니다.

사용자는 귀하의 웹 사이트를 사용하는 사람을 나타냅니다. 기본 수준에서 그 사람이 누구인지 또는 그들이 필요로하는 기능이나 기능이 중요하지 않습니다. 단지 요청을하고 어떤 식 으로든 식별 할 수 있습니다.

추가 기능은 그룹 또는 권한과 같은 기본 제공 구성 요소를 통해 다른 방법으로 추가하거나 예제에서 수행하는 것처럼 직접 작성하는 다른 방법을 통해 추가 할 수 있습니다.

+0

@Andy Hume 사용자 이름, 이름, 성, 전자 메일, 암호, is_staff, is_active, is_superuser 등 모든 속성은 어떻습니까? 사용자를 만들 때이 모든 것을 사용해야합니까? 나는이 모든 속성들이 내 시스템에 어떻게 들어갈 수 있는지 이해하는 데 어려움을 겪고 있다고 생각한다. 이러한 속성을 모두 사용해야합니까? is_superuser = True가 아니라면 www.example.com/admin/을 입력하면 모든 액세스 권한이 부여됩니다. 나는 Django-Annoying을 보았고 AutoOneToOneField()를 사용하여 사용자를 생성했지만 모든 속성을 설정하는 것은 어떨까요? – orokusaki

+0

확실히 모든 속성을 사용할 필요는 없습니다. 특정 유형의 사용자가 수행 할 수있는 작업에 따라 알맞은 수 또는 적게 노출 할 수 있습니다. 예, is_superuser = True는 자신과 자신에게만 필요한 것이고, 필요로하는 몇 가지 매우 특권이 있어야합니다. '일반'사용자는 False로 설정합니다. 필요할 경우 OneToOneField를 통해 모든 속성을 설정할 수 있습니다. profile.user.last_name = "존스" –