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

使用dj-rest-auth部署后验证邮件URL异常问题求助

解决dj-rest-auth部署后邮箱验证URL域名异常问题
  • 确保SITE_ID配置正确
    在settings.py中添加或修改:

    SITE_ID = 1  # 对应你在admin站点管理中配置的站点ID,可在admin的sites页面查看对应条目的ID
    

    同时确认admin中sites模块里的站点domain字段是你的真实后端域名(如your-domain.com,不要带http/https),name字段可随意设置。

  • 设置协议与反向代理适配
    如果你部署用的是HTTPS,在settings.py中添加:

    ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
    

    若使用Nginx等反向代理,需让Django识别真实请求的Host和协议,添加:

    USE_X_FORWARDED_HOST = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')  # HTTP环境可去掉此行
    
  • 自定义邮件适配器强制指定域名(若上述方法无效)
    在accounts/adapters.py中创建自定义适配器:

    from allauth.account.adapter import DefaultAccountAdapter
    
    class CustomAccountAdapter(DefaultAccountAdapter):
        def send_confirmation_mail(self, request, emailconfirmation, signup):
            # 替换为你的真实域名
            real_domain = "your-real-domain.com"
            protocol = self.get_protocol(request)
            # 拼接正确的验证URL
            confirm_url = f"{protocol}://{real_domain}{emailconfirmation.get_confirmation_url(request)}"
            
            ctx = {
                "user": emailconfirmation.email_address.user,
                "confirmation_url": confirm_url,
                "site_name": self.get_site_name(request),
                "email": emailconfirmation.email_address.email,
            }
            
            # 选择对应邮件模板
            email_template = "account/email/email_confirmation_signup" if signup else "account/email/email_confirmation"
            self.send_mail(email_template, ctx, emailconfirmation.email_address.email)
    

    然后在settings.py中指定该适配器:

    ACCOUNT_ADAPTER = 'accounts.adapters.CustomAccountAdapter'
    
  • 最后重启Django服务,重新注册用户测试验证邮件链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:42:53