django allauth 电子邮件登录 - 总是错误
django allauth email login - always wrong
如果我在 Django 设置中将我的 allauth 身份验证方法更改为电子邮件,我总是会收到以下错误:
The e-mail address and/or password you specified are not correct.
即使电子邮件与数据库中的匹配。
我在一个干净的 django 项目中使用以下设置尝试了这个:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "optional"
我将电子邮件验证设置为可选以消除错误来源,但无论我是否确认电子邮件地址,问题仍然存在。
我遇到了同样的问题。由于截止日期,我的屁股着火了,因此我想出了一个办法。分享的想法。我通过使用过滤器获取用户实例,然后通过复制原始请求中的数据来填充 POST 。
self.user = User.objects.get(email=request.POST['email'])
然后
self.request.POST = self.request.DATA.copy()
我使用的是 REST 请求对象,因此 DATA
。您可以使用一些 method.Note 创建另一个可变 POST 对象,而原始 POST 是不可变的,您不能向其中添加任何内容。然后终于
self.request.POST['login'] = self.user.username
然后调用LoginView
的form_valid
。
希望这可以帮助。
今天遇到同样的问题,我的解决办法是我在安装 allauth 时错过了 AUTHENTICATION_BACKENDS 步骤。
确保您的 settings.py
中包含以下内容
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"
)
请参阅 http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial 以获得有用的指南
今天遇到了同样的问题,上述 none 的解决方案有所帮助。
问题出在我用来显示输入字段的自定义登录模板。
因此,要么使用默认方式呈现表单,要么确保使用 login
作为电子邮件输入字段的名称:
<input type="email" name="login" required="">
<input type="password" name="password" required="">
我之前使用的是 email
,但出现错误
Login doesn't exists
我知道这是旧的 post 但以防万一有人看到它。这些是我在 settings.py 中添加的所有设置,以便启用电子邮件登录
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
如果我在 Django 设置中将我的 allauth 身份验证方法更改为电子邮件,我总是会收到以下错误:
The e-mail address and/or password you specified are not correct.
即使电子邮件与数据库中的匹配。
我在一个干净的 django 项目中使用以下设置尝试了这个:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "optional"
我将电子邮件验证设置为可选以消除错误来源,但无论我是否确认电子邮件地址,问题仍然存在。
我遇到了同样的问题。由于截止日期,我的屁股着火了,因此我想出了一个办法。分享的想法。我通过使用过滤器获取用户实例,然后通过复制原始请求中的数据来填充 POST 。
self.user = User.objects.get(email=request.POST['email'])
然后
self.request.POST = self.request.DATA.copy()
我使用的是 REST 请求对象,因此 DATA
。您可以使用一些 method.Note 创建另一个可变 POST 对象,而原始 POST 是不可变的,您不能向其中添加任何内容。然后终于
self.request.POST['login'] = self.user.username
然后调用LoginView
的form_valid
。
希望这可以帮助。
今天遇到同样的问题,我的解决办法是我在安装 allauth 时错过了 AUTHENTICATION_BACKENDS 步骤。
确保您的 settings.py
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"
)
请参阅 http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial 以获得有用的指南
今天遇到了同样的问题,上述 none 的解决方案有所帮助。 问题出在我用来显示输入字段的自定义登录模板。
因此,要么使用默认方式呈现表单,要么确保使用 login
作为电子邮件输入字段的名称:
<input type="email" name="login" required="">
<input type="password" name="password" required="">
我之前使用的是 email
,但出现错误
Login doesn't exists
我知道这是旧的 post 但以防万一有人看到它。这些是我在 settings.py 中添加的所有设置,以便启用电子邮件登录
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True