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

如何修改django-graphql-auth验证邮件中GRAPHQL_AUTH的frontend_domain端口

问题修复方案

核心原因

你配置的frontend_domain未生效是因为django-graphql-auth的默认邮件模板,优先读取全局DOMAIN配置项/接口请求的Host头生成链接,不会直接读取EMAIL_TEMPLATE_VARIABLES下的frontend_domain参数,这是该包的常见使用误区。

修复方案(按优先级排序)

方案1:补充全局DOMAIN配置(最快生效)

调整你settings.py中的GRAPHQL_AUTH配置,将域名端口放到全局配置项:

GRAPHQL_AUTH = {
    # 新增全局域名配置,优先级高于请求Host头
    "DOMAIN": "localhost:3000",
    "SITE_NAME": "你的站点名称",
    "EMAIL_TEMPLATE_VARIABLES": {
        "protocol": "https",
        "path": "verify",
    }
}

重启Django服务后重新发送激活邮件,链接端口就会变成3000。

方案2:自定义激活邮件模板(灵活度最高)

如果需要更个性化的邮件内容,可以覆盖包自带的邮件模板:

  1. 在你的Django项目模板目录下创建graphql_auth/activation_email.html文件
  2. 模板中直接拼接激活链接,示例:
<p>您好,请点击下方链接激活账号:</p>
<a href="{{ protocol }}://{{ frontend_domain }}/{{ path }}/{{ token }}">立即激活</a>
  1. 确保EMAIL_TEMPLATE_VARIABLES中保留frontend_domain配置即可。

方案3:后端新增重定向路由(无需改auth包配置)

如果不想修改原有认证配置,直接在Django的urls.py中新增重定向规则,将8000端口的激活请求自动转发到前端:

from django.views.generic.base import RedirectView

urlpatterns = [
    # 原有路由保留
    path('activate/<str:token>/', RedirectView.as_view(
        url='https://localhost:3000/verify/%(token)s', 
        permanent=False
    )),
]

用户点击原有8000端口的链接会自动跳转到前端3000端口的验证页面,token会自动携带,前端读取URL中的token调用verifyToken mutation即可完成激活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:48:04