Django rest auth 电子邮件而不是用户名
Posted
技术标签:
【中文标题】Django rest auth 电子邮件而不是用户名【英文标题】:Django rest auth email instead of username 【发布时间】: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'
我怎样才能实现它?
【问题讨论】:
1.你有任何错误吗? 2. 你有自定义用户模型吗? 3.您是否尝试过以下设置? django-allauth.readthedocs.org/en/latest/… 【参考方案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'要小写。
【讨论】:
以上是关于Django rest auth 电子邮件而不是用户名的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 allauth 和 rest-auth 从 React 前端在 Django 中重新发送确认电子邮件
如何使用 django-rest-auth 和 Mailgun 从 Django 发送密码重置电子邮件
如何自定义 django rest auth 密码重置电子邮件内容/模板
Django rest-auth allauth 注册,带有电子邮件、名字和姓氏,没有用户名