django allauth电子邮件登录 - 总是错误的

mat*_*eok 3 python email django login django-allauth

如果我在django设置中将我的allauth身份验证方法更改为电子邮件,我总是会收到以下错误:

The e-mail address and/or password you specified are not correct.
Run Code Online (Sandbox Code Playgroud)

即使电子邮件与数据库中的电子邮件匹配.

我使用以下设置在干净的django项目中尝试了这个:

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "optional"
Run Code Online (Sandbox Code Playgroud)

我将电子邮件验证设置为可选,以消除错误来源,但无论我是否确认电子邮件地址,问题仍然存在.

wjd*_*jdp 22

今天有同样的问题,我的解决方案是我在安装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"
)
Run Code Online (Sandbox Code Playgroud)

有关实用指南,请参见http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial

  • 这也是我的案例中的问题。谢谢! (2认同)

Abh*_*hek -1

我遇到了同样的问题。由于截止日期,我的屁股着火了,因此我想出了一个解决办法。分享的想法。我使用过滤器获取用户实例,然后通过复制原始请求中的数据来填充 POST。

self.user = User.objects.get(email=request.POST['email'])
Run Code Online (Sandbox Code Playgroud)

然后

self.request.POST = self.request.DATA.copy()
Run Code Online (Sandbox Code Playgroud)

我使用的是 REST Request 对象,因此DATA. 您可以使用某种方法创建另一个可变的 POST 对象。请注意,原始 POST 是不可变的,您不能向其中添加任何内容。然后最后

self.request.POST['login'] = self.user.username
Run Code Online (Sandbox Code Playgroud)

然后调用form_validLoginView. 希望这可以帮助。