私はレガシー データベースを使用しているcontrib.auth.models.User
ため、認証にはデフォルトの Django の代わりに別のモデルを使用する必要があります。
私のモデルには、ユーザー名に使用される 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を使用すると、認証テーブルが追加されましたが、db自体を使用する場合はどうなりますか?同じことをする必要がありますか?)これは、アプリの既存の認証システムを処理する正しい方法ですか?