레거시 데이터베이스로 작업 중이므로 인증을 위해 기본 장고 대신 contrib.auth.models.User
대신 다른 모델을 사용해야합니다.레거시 db에 대한 사용자 정의 인증 백엔
내 모델에는 사용자 이름에 사용되는 ID 필드 (id = models.DecimalField(...)
)와 관리자가 데이터베이스 인터페이스에서 정의하는 암호 필드 (password = models.CharField(...)
)가 있습니다.
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를 사용할 때 나는 어떨까? 같은 것을하기로되어 있나?) 이것이 내 앱의 기존 인증 시스템을 처리하는 올바른 방법입니까?
실제 사용자 모델을 게시 할 수 있습니까? 또한 문제가 'PASSWORD_HASHERS' 설정과 유사하다고 할 때도 동일한 오류 메시지가 표시됩니까? 언제? – supervacuo