如何修改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:自定义激活邮件模板(灵活度最高)
如果需要更个性化的邮件内容,可以覆盖包自带的邮件模板:
- 在你的Django项目模板目录下创建
graphql_auth/activation_email.html文件 - 模板中直接拼接激活链接,示例:
<p>您好,请点击下方链接激活账号:</p> <a href="{{ protocol }}://{{ frontend_domain }}/{{ path }}/{{ token }}">立即激活</a>
- 确保
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
相关产品推荐
相关产品推荐

