web-dev-qa-db-ja.com

Djangoユーザー名の代わりに認証メールを残す

Djangoプロジェクトで、Django-rest-authを使用して認証を行っています。email with passwordユーザー名+パスワードではなく、ユーザーを認証します。

Settings.pyに次の設定がありますが、何もしませんでした。

REST_SESSION_LOGIN = True
EMAIL_BACKEND = 'Django.core.mail.backends.console.EmailBackend'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_AUTHENTICATION_METHOD = 'EMAIL'
ACCOUNT_EMAIL_VERIFICATION = 'optional'

どうすればそれを達成できますか?

13
Thinker

次の設定が機能しました:

#This is required otherwise it asks for email server
EMAIL_BACKEND = 'Django.core.mail.backends.console.EmailBackend'
# ACCOUNT_EMAIL_REQUIRED = True
# AUTHENTICATION_METHOD = 'EMAIL'
# ACCOUNT_EMAIL_VERIFICATION = 'optional'

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True   
ACCOUNT_USERNAME_REQUIRED = False

#Following is added to enable registration with email instead of username
AUTHENTICATION_BACKENDS = (
 # Needed to login by username in Django admin, regardless of `allauth`
 "Django.contrib.auth.backends.ModelBackend",

 # `allauth` specific authentication methods, such as login by e-mail
 "allauth.account.auth_backends.AuthenticationBackend",
)
15
Thinker

私もこのパッケージを使用していますが、この構成を呼び出すことで、次のように機能しました。

ACCOUNT_AUTHENTICATION_METHOD = 'email'

この構成に注意してください。この構成はDjango-allauthに属しています。これを参照してください。

class AuthenticationMethod:
    USERNAME = 'username'
    EMAIL = 'email'
    USERNAME_EMAIL = 'username_email'

上記のクラスはallauthにある設定なので、「EMAIL」は小文字で記述します。

お役に立てば幸いです

0
Moe Far