【问题标题】:Django rest auth email instead of usernameDjango rest auth 电子邮件而不是用户名
【发布时间】:2016-08-10 10:55:33
【问题描述】:

我有一个 django 项目,我在其中使用 Django-rest-auth 进行身份验证。我想使用 带密码的电子邮件 来验证用户身份,而不是用户名+密码。

我的 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'

我怎样才能实现它?

【问题讨论】:

标签: python django django-rest-framework django-allauth django-rest-auth


【解决方案1】:

以下设置有效:

#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",
)

【讨论】:

    【解决方案2】:

    我也在使用这个包,通过调用这个配置它对我有用:

    ACCOUNT_AUTHENTICATION_METHOD = 'email'
    

    注意这个配置,这个配置属于django-allauth,看这个:

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

    上面的类是allauth中的设置,所以'EMAIL'要小写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 2020-02-28
      • 2011-10-21
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多