繁体   English   中英

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"

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

今天有同样的问题,我的解决方案是我在安装 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

今天遇到了同样的问题,上述解决方案都没有帮助。 问题来自我用来显示输入字段的自定义登录模板。

因此,要么使用默认方式呈现表单,要么确保您使用login名作为电子邮件输入字段的名称:

<input type="email" name="login" required="">
<input type="password" name="password" required=""> 

我以前使用的email引发错误

登录名不存在

我知道这是一个旧帖子,但以防万一有人遇到它。 这些是我为了启用电子邮件登录而添加的 settings.py 中的所有设置

ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True

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

self.user = User.objects.get(email=request.POST['email'])

然后

self.request.POST = self.request.DATA.copy()

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

self.request.POST['login'] = self.user.username

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM