2016-07-05 4 views
1

나는 Customers (username, password ..etc)라는 모델과 User (username, password ... 등)라는 모델을 가지고있다.
인증이 다른 두 개의 서로 다른 API를 만들고 싶습니다.
사용자 아이디, 비밀번호
으로 인증해야하고 두 번째 아이디는 고객 아이디, 비밀번호를 사용하여 인증해야합니다.
어떻게하면됩니까?
감사합니다.사용자 정의 장고 인증

답변

0

클래식 인증에 django.contrib.auth.user 클래스를 사용하는 것이 좋습니다. 당신도 그 클래스에서 상속 또는 일부 자세한 내용과 코드의 경우에도 일부 조각을 추가해야합니다 귀하의 질문의 나머지

from django.contrib.auth.models import User 

class YourUser(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 

을 다음과 같이 자신의 모델에 OneToOne 관계를 추가 할 수 있습니다.

2

나는 다음과 같은 옵션을 제안 : 나는 사용자 모델을 가정하고

1.

하는 앱 "진짜"사용자입니다. 이것이 사실이라면 django의 기본 사용자 모델 클래스를 사용하십시오. 그것은 밖으로 작동합니다.

고객 모델의 경우 AbstractBaseUser에서 상속 받도록 설정하십시오. 그러면 암호 기능이 기본적으로 제공되며 필요에 따라 다른 필드를 추가 할 수 있습니다.

이제 로그인을 위해 2 개의 다른 URL을 만들 수 있습니다. User 모델을 체크인하는 사용자를위한 1 개의 url과 고객 모델을위한 하나의 url. 이렇게하면 모든 사람에게 혼동을 피할 수 있습니다.

단일 URL을 선호하는 경우 사용자 이름과 비밀번호와 함께 모델 클래스를 언급해야 테이블을 확인할 수 있습니다. 각 장고의 기본 사용자 모델과 일대일 관계를 가질 것이다 USERPROFILE 및 CustomerProfile

:

2.

두 프로파일 모델을 만듭니다.

기본적으로 사용자는 "실제"사용자 또는 고객의 프로필을 가질 수 있습니다.

이 경우 모든 사용자를 만들 때 UserProfile 또는 CustomerProfile을 첨부 할 것인지 확인해야합니다.

이 경우 단일 로그인 URL 만 사용하는 것이 좋습니다. 사용자의 로그인 정보에서 먼저 User 테이블에서 사용자를 가져온 다음 CustomerProfile 테이블에서 쿼리를 실행하여 고객인지 여부를 확인할 수 있습니다.