由于我使用的是旧数据库,因此我应该使用另一个模型而不是默认的 Djangocontrib.auth.models.User
进行身份验证。
id = models.DecimalField(...)
我的模型有一个用于用户名的 id 字段 ( ) 和一个用于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 我在其中添加了身份验证表,但是当我使用 db 本身时呢?我应该这样做吗?)这是处理我的应用程序现有身份验证系统的正确方法吗?