0

由于我使用的是旧数据库,因此我应该使用另一个模型而不是默认的 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 本身时呢?我应该这样做吗?)这是处理我的应用程序现有身份验证系统的正确方法吗?

4

1 回答 1

1

authdb 条目通常比密码长得多,并且相应地需要更多的存储空间。

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

有关详细信息,请参阅 Linux 的crypt(3)手册页。

于 2012-08-08T22:09:04.420 回答