この質問のドキュメントはhttps://docs.djangoproject.com/en/1.9/topics/auth/customizing/ですが、私の使用例についてはいくつかの説明が必要です。djangoのカスタムユーザによるカスタム認証?
私は基本的に私が作成したapiを持っています。このapiが行うことは、ユーザーフォームデータを外部URLに送信し、一度送信するとそのデータがその外部URLデータベースに保存されます。
次に、別のAPI呼び出しによって特定のユーザーを取得できます。ユーザーはオブジェクトとして返されます。今私は自分のシステムを介してdjango.contrib.authを使って私の最後にそのユーザをログインしようとしていますが、私が持っているものは動作していません。ここで
は私のプロセスである:私は私のnew_appのバックエンドファイルでは、私のsettings.pyファイルAUTHENTICATION_BACKENDS =(
'new_app.backends.SettingsBackend',
'django.contrib.auth.backends.ModelBackend',
)
B.にカスタム認証バックエンドを追加
A.、私は次のコードを持っている:
サインインビューでclass SettingsBackend(object):
def authenticate(self, username=None, password=None):
if username and password:
user = api.get_user()
#add pk to user object to satisfy django error warning
user.pk = user.unique_field
return user
return None
def get_user(self, user_id):
try:
if self.user.pk == user_id:
return self.user
except:
return None
、私はこれを使用してユーザーをログインしようとしています:
def login_user(request, username, password):
from django.contrib import auth
if not username and password:
raise ValueError("Invalid username and password")
auth_user = auth.authenticate(username=username, password=password)
if auth_user is None:
raise ValueError("Invalid username and password")
auth.login(request, auth_user)
return auth_user
私はエラーが言ってもらう:
'api.get_user()' object has no attribute 'save'
エラーがauth.login(request, auth_user)
ライン上に発生しています。
私はdjango.contrib.authが自分のユーザーオブジェクトがdjangoモデルだと思っているからです。だから、私のシナリオでは、この問題にどのように対処しなければならないのでしょうか?ありがとうございました。
あなたは変更されたユーザーモデルを設定しましたか? – RA123
@ RA123お返事ありがとうございます。私はこれが典型的なdjangoユーザモデルではないので、必要ではないと思ったので、私はしませんでした。私は近くにいるように感じますが、おそらくdjango.contrib.authを使用せずに自分のauthメソッドを作成する必要がありますが、それは私がいくつかのガイダンスを必要とする場所です。 – user875139
djangoのユーザモデル – RA123