Django
でデフォルトユーザー認証はUsername
とPassword
で統合されています。私のプロジェクトのプロフィールページで、私はUsername
を変更するオプションがあります。ですから、バックエンドとフロントエンドの認証システムをemail
とpassword
に変更する必要があります。Django 1.10 - フロントエンドユーザー認証をユーザー名から電子メールに変更するにはどうすればいいですか?
authentication backendを使用すると、管理者のデフォルト認証システムをemail
とpassword
に変更できます。私は、フロントエンドでて認証を行うことができますどのように思っていた
AUTHENTICATION_BACKENDS = (
'apps.account.email-auth.EmailBackend',
)
-
class EmailBackend(object):
def authenticate(self, username=None, password=None, **kwargs):
UserModel = get_user_model()
try:
user = UserModel.objects.get(email=username)
except UserModel.DoesNotExist:
return None
else:
if getattr(user, 'is_active', False) and user.check_password(password):
return user
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
settings.py
で - ここでは、コードです。既に、私はemail
とpassword
を通して前のログインページを準備しました。
しかしform.errors
を参照し、予測はAUTHENTICATION_BACKENDS
のような任意のフロント認証が欠落しなければならないあなたの助けのためにありがとうございました!
ここにはフロントエンドの認証手段がありますか?あなたが作成したものは、管理者とクライアントにも適用可能です。 – itzMEonTV
あなたはそれを明確にしてください。 –
django authの 'User'フィールド' username'は一意ですが、 'email'はそうではありません。 'authenticate'に' MultipleObjectsReturned'もキャッチする必要があります。 – schwobaseggl