我的系统已经知道用户的电子邮件地址。当用户注册时,他们会收到来自 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/