我已经构建了一个应用程序,并添加了这样的SMTP凭据(在服务器代码块中):

Meteor.startup(function () {
    smtp = {
      username: 'username@emails.com',
      password: 'lkajflkadjakdlfj',
      server:   'smtp.emails.com',
      port: 587
    }

    process.env.MAIL_URL = 'smtp://' + encodeURIComponent(smtp.username) + ':' + encodeURIComponent(smtp.password) + '@' + encodeURIComponent(smtp.server) + ':' + smtp.port;
});

这可行,并且发送正常。但是只要阅读我已部署的应用程序的源代码,任何人都可以使用我的凭据。

我应该在其他地方存储这些凭据吗?还是完全设置此方法的另一种方法?

最佳答案

通常,尽量避免在代码中对环境变量进行硬编码,您还可以使用其他几个选项。

您可以使用Meteor.settings存储您的私有(private)凭据:
private/settings.json

{
  "MAIL_URL": "smtp://smtp://postmaster%40mg.domain.com:password@smtp.mailgun.org:587"
}
server/config.js
process.env.MAIL_URL = Meteor.settings.MAIL_URL;

别忘了用 meteor 设置为您的应用程序供稿:

本地开发工作流程:
meteor --settings private/settings.json

部署到 meteor 服务器:
meteor deploy myapp.meteor.com --settings private/settings.json

另一个选择是使用mup(Meteor Up),它提供了一个名为mup.json的配置文件,您可以在其中将凭据存储为env变量,这非常方便。
mup.json
"env": {
  "MAIL_URL": "..."
}

最后但并非最不重要的一点是,如果您使用的是版本控制,请不要忘记使用.gitignore设置!
.gitignore
private/settings.json
mup.json

09-20 15:50