django - 如何将 allauth 密码重置视为电子邮件验证?

标签 django django-allauth email-validation change-password

我的系统已经知道用户的电子邮件地址。当用户注册时,他们会收到来自 allauth 的错误消息:

A user is already registered with this e-mail address.

我建议用户在看到此消息时重置密码。但是,一旦他们重置了密码,allauth 就会触发电子邮件地址确认流程,因为 ACCOUNT_EMAIL_VERIFICATION = True

用户此时还进行电子邮件验证是不方便且不必要的。在这种情况下如何避免电子邮件验证?

最佳答案

如果您知道用户在密码重置时只能拥有一个与其关联的电子邮件地址,那么您可以监听密码重置信号并将该电子邮件地址标记为已验证。这将防止 allauth 在密码重置后触发电子邮件验证流程。

例如,您可以将以下内容放入 signals.py 中:

from django.dispatch import receiver
from allauth.account.models import EmailAddress
from allauth.account.signals import password_reset


@receiver(password_reset)
def auto_verify_email_address_on_password_reset(sender, request, user, **kwargs):
    email_address = EmailAddress.objects.get_for_user(user, user.email)
    if not email_address.verified:
        email_address.verified = True
        email_address.save()

关于django - 如何将 allauth 密码重置视为电子邮件验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69472511/

相关文章:

Python-验证电子邮件是否存在

email - RFC 5322 电子邮件格式验证

Django:是否需要所有表单集表单?

python - 使用下拉菜单外键 : IntegrityError XXX_id may not be NULL 保存表单集

django - 自定义RadioSelect

python - Django 2.0 - 使用 allauth 登录 Facebook - 无法加载 URL : The domain of this URL isn't included in the app's domains

python - Django Rest Framework 使用 PageNumberPagination 类添加页码属性

python - 如何将 max_length 添加到 allauth 用户名

python - django-allauth python :3. 8.3-alpine Dockerfile 的依赖项是什么

javascript - 使用 REGEX 发送电子邮件