Django rest auth使用电子邮件而非用户名

19

我有一个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'

我该如何实现它?


1
  1. 你有收到任何错误吗?
  2. 你有自定义用户模型吗?
  3. 你尝试过以下设置吗?http://django-allauth.readthedocs.org/en/latest/advanced.html#custom-user-models
- mariodev
2个回答

36

以下设置有效:

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

0

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

ACCOUNT_AUTHENTICATION_METHOD = 'email'

小心这个配置,这个配置属于django-allauth,请看这里:

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

上述类是在allauth中的设置,因此您应该以小写形式编写“EMAIL”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接