私は Django を初めて使用するので、ユーザー認証とログインについて質問したいと思いました。ドキュメントを読みましたが、達成しようとしていることに関する適切な回答/指示を見つけることができませんでした。基本的に、レガシー システムに統合する必要があるため、デフォルトのauth_user
テーブルなどは使用できません。以下に示すように、アプリで定義されたモデルがあります。
class User(models.Model):
class Meta:
db_table = 'user'
def __unicode__(self):
return self.first_name + ' ' + self.last_name
first_name = models.CharField(max_length=64)
last_name = models.CharField(max_length=64)
email = models.CharField(max_length=64)
password = models.CharField(max_length=32)
active = models.CharField(max_length=1)
last_modified = models.DateTimeField("last modified")
timestamp = models.DateTimeField("timestamp")
私の質問は、上記のモデルをどのように利用して (またはどのような変更を加える必要があるのか)、認証アプリを操作できるかということです。現在、ドキュメントに従って、認証用に次のバックエンドがあります。
class CustomAuth(ModelBackend):
def authenticate(**credentials):
return super(CustomAuth, self).authenticate(**credentials)
def authenticate(self, username=None, password=None):
# Check the username/password and return a User.
if username != None and password != None:
# Get the user
try:
user = User.objects.get(email=username)
if user.check_password(password):
logger.info('User is authenticated, logging user in')
return user
except User.DoesNotExist:
pass
return None
def get_user(self, user_id):
try:
return User.objects.get(id=user_id)
except User.DoesNotExist:
return None
私は以下のようにテストしようとしました:
user = authenticate(username='test@gmail.com', password='testUser')
などのさまざまなエラーが発生し続け'module' object is not callable
ます。カスタム認証もsettings.py
ファイルに含めました。私がやろうとしていることの例はありますか? どんな助けでも大歓迎です、ありがとう!
編集 私は自分のモデルを以下に変更しました:
from django.db import models
from django.contrib.auth.models import User as AuthUser, UserManager
# Extend the base User model
class User(AuthUser):
class Meta:
db_table = 'user'
active = models.CharField(max_length=1)
last_modified = models.DateTimeField("last modified")
objects = UserManager()