使用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
相关产品推荐
相关产品推荐

