You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

django-allauth邮箱验证后无法登录问题求助(Cloud9环境)

django-allauth邮箱验证后无法自动登录且重复收到邮件的解决办法

环境信息

  • Cloud9
  • Python 3.7.9
  • Django 2.2.17
  • django-allauth 0.44.0

当前settings.py配置

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_EMAIL_REQUIRED = True
LOGIN_REDIRECT_URL = 'xxx:index'
ACCOUNT_LOGOUT_REDIRECT_URL = 'account_login'
ACCOUNT_LOGOUT_ON_GET = True
ACCOUNT_EMAIL_SUBJECT_PREFIX = ''
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
ACCOUNT_UNIQUE_EMAIL = True
DEFAULT_FROM_EMAIL = 'tttt@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
ACCOUNT_EMAIL_VERIFICATION = "mandatory"

问题现象

  1. 注册账号后收到验证邮件:

You're receiving this e-mail because user jjjj@gmail.com has given your e-mail address to register an account on example.com.

To confirm this is correct, go to https://eeee.cloud9.us-east-2.amazonaws.com/accounts/confirm-email/4444/

  1. 点击验证链接后无法自动登录系统,反而收到另一封验证邮件,无任何错误提示,账号密码确认输入正确,期望点击验证链接后直接登录。

解决步骤

1. 开启验证后自动登录

在settings.py中添加以下配置,启用邮箱验证完成后的自动登录功能:

ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True

该配置在django-allauth 0.44.0版本中默认关闭,启用后用户点击验证链接即可自动登录,无需手动输入账号密码。

2. 修复重复发送验证邮件的问题

  • 排查登出配置冲突:临时注释ACCOUNT_LOGOUT_ON_GET = True配置后测试。该配置允许通过GET请求触发登出,可能在验证流程中意外触发登出逻辑,导致系统判定用户未完成验证,重新发送邮件。若测试后问题解决,建议改用默认的POST请求方式登出,避免GET请求的冲突。
  • 检查验证状态:登录Django后台,查看emailaddress表中对应邮箱的verified字段是否在点击验证后被标记为True。若未标记,说明验证请求未正常执行,需检查:
    • Cloud9环境的HTTPS配置是否生效,确保ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'与实际访问协议一致;
    • ALLOWED_HOSTS是否包含Cloud9的实际域名(eeee.cloud9.us-east-2.amazonaws.com),避免请求被拒绝。

3. 修正站点域名配置

在settings.py中补充站点配置:

SITE_ID = 1
ALLOWED_HOSTS = ['eeee.cloud9.us-east-2.amazonaws.com', 'localhost', '127.0.0.1']

登录Django后台(/admin/),找到sites应用下的Site对象,将域名和显示名称修改为实际的Cloud9域名(eeee.cloud9.us-east-2.amazonaws.com),确保邮件中的验证链接域名与站点实际域名一致,避免验证流程异常。

内容的提问来源于stack exchange,提问作者Jun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:35:36