2010-02-18 3 views
1

표준 Django Admin을 사용하지 않는 다중 거주자 응용 프로그램을 만들고 있습니다 (모든 세입자에게 액세스 할 수있는 내부 용을 제외하고는 ... 간단합니다). 나 자신의 인증 시스템을 만들려고하고 있는데 표준 사용자 모델 (또는 기본 제공 응용 프로그램의 모델)을 사용하는 데 관심이 없다. 내 응용 프로그램에는 계정이 있고 각 계정에는 관리자가 있습니다 (이름 충돌 목적으로 관리자 대 사용자를 사용해야했습니다). 해당 사용자는 내 자신의 완전 맞춤 시스템을 사용하여 인증합니다. 이 모든 것은 잘못된 것입니다. 해야합니까/나는 (계정 소유자가 기본 Admin 인터페이스를 사용하도록 허용하지 않기 전에 언급 한 것처럼) 내 자신의 사용자 정의 인터페이스를 사용하는 다중 테넌트 환경에서 장고의 인증 시스템을 계속 사용할 수 있습니까? 내 시스템을 사용하는 데 보안 함의가 있습니까? 아니면 세션 하이재킹 방지와 같은 장고 표준 보안 요소가 나를 보호합니까?Django : 완전 맞춤형 인증 질문입니다. 제발 도와주세요

많은 장고가 관리자 인터페이스를 사용하고 자신의 관리자와 함께 멀티 테넌트 SAAS 소프트웨어를 개발하지 않는다는 생각으로 만들어졌습니다. 나는이 모든 잘못을 생각하고 있나?

답변

3

확실히 장고 인증 시스템을 사용해야합니다. 그래도 필요한 90 %를 수행합니다.

저는 하나의 프로젝트에서 기업 사용자, 관리 사용자 및 일반 사용자가 여러 명인 시나리오를 작성했습니다.

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) 

그리고 사용자 정의 장식과보기 수준에서 집행 권한 요구 사항의 예 :

여기에 모델 내가 사용하는 구조의 계정에 대한

@account_access_required # request.user.get_profile().account == account 
def account_page(request, account_id): 
    # ... 

@account_admin_required # request.user == account.admin 
def account_users(request, account_id): 
    # ... 

우리는 실제로 사용 하위 도메인, 그래서 필요가 없었다 명시적인 account_id 매개 변수의 경우

계정 관리자는 맞춤 인터페이스를 사용하는 것이 매우 합리적입니다. 장고 관리 인터페이스는 시스템 관리자와 내부 지원 직원 같은 100 % 신뢰할 수있는 사용자를위한 것입니다.

+0

@Alex Lebedev UserProfile과 관련된 User 개체를 어떻게 만들고 어디에서 만드나요? 또한 User 객체에 어떤 속성을 사용합니까 (예 : first_name 등과 같이 많은 속성을 사용할 수 있습니다). – orokusaki

+0

'User'는 django auth system에서 가져 왔습니다. 질문은 설명서에서 답변을 얻을 수 있습니다. http://docs.djangoproject.com/en/1.1/topics/auth/#topics-auth –