django-allauth - 手动调用电子邮件验证

标签 django-allauth

我们在生产中使用 django-allauth 已经有一段时间了。我们可以启用帐户电子邮件验证,效果很好。但是我们现在有一个 REST api,它允许用户通过 API 注册,并且工作流不通过 django-allauth。是否可以手动调用 django-allauth 电子邮件验证功能,或者我们是否需要使用自定义解决方案?

最佳答案

我将在这里发布我的答案,因为我一直在寻找使用 Django 内置身份验证(并使用自定义身份验证模型)添加电子邮件验证,我使用了 Marcus 提到的方法,我将添加所有其他内容对于任何想要做同样事情的人来说。

第一:按照说明安装 django-allauth here

第二:settings.py 中添加您的电子邮件配置文件 :

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com' #I used gmail in my case
EMAIL_HOST_USER = <Your Email>
EMAIL_HOST_PASSWORD = <Your Password>
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = <Default Sender name and email>

第三:添加验证和默认登录url的配置,你会找到所有配置参数的文档here ,请注意,在我的示例中,我使用了前面提到的自定义用户模型,这就是我设置 ACCOUNT_EMAIL_REQUIRED 的原因。至 True & ACCOUNT_USER_MODEL_USERNAME_FIELDACCOUNT_USERNAME_REQUIREDFalse ,还有 LOGIN_URL , ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URLLOGIN_REDIRECT_URL参数在用户点击通过电子邮件发送给他的确认链接后使用
ACCOUNT_EMAIL_VERIFICATION='mandatory'
ACCOUNT_CONFIRM_EMAIL_ON_GET=True
ACCOUNT_EMAIL_REQUIRED=True
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
LOGIN_URL='app:login_user'
LOGIN_REDIRECT_URL='app:login_user'
ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL='app:login_user'

第四:在您的注册表单之后,使用 is_active 保存用户实例参数设置为 False ,然后调用方法:
from allauth.account.utils import *
send_email_confirmation(request, user, True)

最后:用户确认邮件后收到信号,设置is_activeTrue
from allauth.account.signals import email_confirmed
from django.dispatch import receiver

# Signal sent to activate user upon confirmation
@receiver(email_confirmed)
def email_confirmed_(request, email_address, **kwargs):
    user = MyUser.objects.get(email=email_address.email)
    user.is_active = True
    user.save()

最后,您可能希望从 Django Admin 更改默认站点名称,因为它将包含在发送的电子邮件中。

关于django-allauth - 手动调用电子邮件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33877074/

相关文章:

django-allauth:重新排列表单字段(更改顺序)

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

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

Django-allauth 检索头像头像

django - django-allauth 发送电子邮件时电子邮件主题行中的 "[Site]"

django-rest-framework - django rest 框架中的 Google 登录 + allauth + rest-auth

在 SSL 中运行的 django-allauth

python - Django allauth 不会在电子邮件确认时登录用户

django - 注册后如何在 allauth 中自定义用户配置文件字段

django - 使用电话或电子邮件登录/注册 django、allauth 集成