MeteorJS 无密码电子邮件身份验证发送指向特定服务器而不是域名的链接

问题描述 投票:0回答:1

我使用 MeteorJS 无密码身份验证、Cloudflare 用于 DNS、Mailgun 作为电子邮件服务器、Nodechef 用于应用程序托管:https://docs.meteor.com/packages/accounts-passwordless

每当用户提交电子邮件以在电子邮件收件箱中接收用于登录网站的链接时,该链接都会指向 NodeChef 服务器而不是域(即 https://example1-12820.nodechef.com 而不是 https://example.com)。每当用户通过此链接登录时,URL 也是 NodeChef 服务器。我希望域名同时出现在链接和 URL 中,主要是为了虚荣的目的。

对于以下内容,假设正确的域应该是 example.com:

//body.js
import './body.html';
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';
import { Accounts } from 'meteor/accounts-base';

Template.App_body.events({
    'submit #login-form'(event) {
        event.preventDefault();
        const email = event.target.email.value;
        if (email == "") {
            FlashMessages.sendError("Must enter email to receive link");
        } else {
            Accounts.requestLoginTokenForUser({ 
                selector: email.toLowerCase().trim(),
                userData: { email: email.toLowerCase().trim() }}, function (error) {
                if (error) { 
                    FlashMessages.sendError(error); 
                } else {
                    FlashMessages.sendSuccess("Check email for login link");
                }
            });
        }
    },
});

//fixtures.js
import { Meteor } from 'meteor/meteor';
import { Accounts } from 'meteor/accounts-base';

Meteor.startup(() => {
  process.env.MAIL_URL = Meteor.settings.MAIL_URL;
  Accounts.emailTemplates.siteName = 'Example';
  Accounts.emailTemplates.from = 'Example Admin <[email protected]>';
  Accounts.emailTemplates.sendLoginToken = {
    subject() {
       return "Login to Example";
    },
    text(user, url) {
       return `Hi there! Login to Example by following this link: ${url}`;
    }
  };
});

//settings.json
{
"MAIL_URL": "smtp://[email protected]:[email protected]:587"
}

以下是相关 Cloudflare DNS 记录的类型、键和值:

CNAME email.mg mailgun.org
CNAME example.com example1-12820.nodechef.com
MX mg mxa.mailgun.org
MX mg mxb.mailgun.org
TXT mg v=spf1 include:mailgun.org ~all

还有其他记录,但好像没有关联。

我尝试更改 CNAME 和 MX 记录,并检查 Mailgun、Cloudflare 和 NodeChef 中是否存在可以更改登录链接中发送的 URL 的设置,但无济于事

meteor cloudflare mailgun password-less
1个回答
0
投票

更新 Nodechef 环境设置中的 ROOT_URL 解决了这个问题

© www.soinside.com 2019 - 2024. All rights reserved.