2012-08-08 2 views
0

레거시 데이터베이스로 작업 중이므로 인증을 위해 기본 장고 대신 contrib.auth.models.User 대신 다른 모델을 사용해야합니다.레거시 db에 대한 사용자 정의 인증 백엔

내 모델에는 사용자 이름에 사용되는 ID 필드 (id = models.DecimalField(...))와 관리자가 데이터베이스 인터페이스에서 정의하는 암호 필드 (password = models.CharField(...))가 있습니다.

나는 내 자신의 인증 백엔드 쓴 : 나는 어쩌면 사소한 STH를 물어보고 싶은게

from auth.models import Owners 
from django.contrib.auth.models import User 

class AuthBackend(object): 
    def authenticate(self, username, password): 
     try: 
      owner = Owners.objects.get(id=username, password=password) 
      try: 
       user = User.objects.get(id=owner.id) 
       print user 
      except User.DoesNotExist: 
       user = User(id=owner.id) 
       user.is_staff = False 
       user.is_superuser = False 
       user.set_unusable_password() 
       user.save() 
      return user 

     except Owners.DoesNotExist: 
      return None 

    def get_user(self, id): 
     try: 
      return User.objects.get(id=id) 
     except User.DoesNotExist: 
      return None 

,하지만 지금은 사용자를 작성하고 내가이 장고의 인증 모듈을 사용하기 때문에 그것은 또한, 등 자신의 테이블을한다입니다 내가 사용하는 레거시 db에 추가 할 것인가? (이제 나는 그것의 인스턴스에서 작업하고있다. synchdb를 사용하면 auth 테이블을 추가 할 수있다. 그러나 db를 사용할 때 나는 어떨까? 같은 것을하기로되어 있나?) 이것이 내 앱의 기존 인증 시스템을 처리하는 올바른 방법입니까?

+0

실제 사용자 모델을 게시 할 수 있습니까? 또한 문제가 'PASSWORD_HASHERS' 설정과 유사하다고 할 때도 동일한 오류 메시지가 표시됩니까? 언제? – supervacuo

답변

1

authdb 항목은 대개 암호보다 훨씬 길며 그에 따라 더 많은 저장 공간이 필요합니다.

$<algorithm>$<salt>$<hash> 

자세한 내용은 Linux의 crypt(3) 매뉴얼 페이지를 참조하십시오.

관련 문제