0
由於我正在使用舊數據庫,因此我應該使用其他模型而不是默認的Django contrib.auth.models.User
進行身份驗證。傳統數據庫的自定義身份驗證後端
我的模型有一個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
我想問某事也許微不足道,但因爲我現在創建用戶和我利用有Django的認證模塊的它自己的表等,是否也應該將它們添加到我使用的遺留數據庫中(現在我正在處理它的一個實例,並且使用synchdb獲得了auth表,但是當我使用db本身時,我該怎麼做?) 這是處理我的應用程序的現有認證系統的正確方法嗎?
你可以發佈你的實際用戶模型嗎?另外,當你說你的問題與'PASSWORD_HASHERS'設置類似時,你是否得到了同樣的錯誤信息?什麼時候? – supervacuo 2012-08-08 21:39:56