Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor SMTP凭据可在部署的应用程序的源代码中查看_Javascript_Email_Meteor - Fatal编程技术网

Javascript Meteor SMTP凭据可在部署的应用程序的源代码中查看

Javascript Meteor SMTP凭据可在部署的应用程序的源代码中查看,javascript,email,meteor,Javascript,Email,Meteor,我已经构建了一个应用程序并添加了如下SMTP凭据(在服务器代码块中): 这是有效的,并且发送的很好。但是只要阅读我部署的应用程序的源代码,任何人都可以使用我的凭据 我是否应该在其他地方存储这些凭据?或者完全是另一种设置方法?来自Meteor文档(): 客户端上未加载任何名为server的目录。类似 将代码包装在if(Meteor.isServer){…}中,客户端除外 甚至从未收到代码。任何你不想要的敏感代码 服务于客户端,例如包含密码或密码的代码 身份验证机制应保存在服务器目录中 尽量避免在代

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

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


我是否应该在其他地方存储这些凭据?或者完全是另一种设置方法?

来自Meteor文档():

客户端上未加载任何名为server的目录。类似 将代码包装在if(Meteor.isServer){…}中,客户端除外 甚至从未收到代码。任何你不想要的敏感代码 服务于客户端,例如包含密码或密码的代码 身份验证机制应保存在服务器目录中


尽量避免在代码中硬编码环境变量一般来说,您还有其他几种选择

您可以使用
Meteor.settings
存储您的私人凭据:

private/settings.json

{
  "MAIL_URL": "smtp://smtp://postmaster%40mg.domain.com:password@smtp.mailgun.org:587"
}
"env": {
  "MAIL_URL": "..."
}
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
(),它提供了一个名为mup.json的配置文件,您可以将凭证存储为env变量,这非常方便

mup.json

{
  "MAIL_URL": "smtp://smtp://postmaster%40mg.domain.com:password@smtp.mailgun.org:587"
}
"env": {
  "MAIL_URL": "..."
}
最后但并非最不重要的一点是,如果您使用的是版本控制,请不要忘记
.gitignore
您的设置

.gitignore

private/settings.json
mup.json

创建一个/server目录并将代码放在其中。@MarkLeiber谢谢,我不知道这么简单。“我以后还得继续研究我的项目结构。@draason我推荐这个答案,而不是其他答案,因为你真的不想检查你的秘密。”。另请参见。这很有帮助,因为它提到必须手动设置
邮件URL
,即使它已在
settings.json
中定义。实际上,我将其设置为
process.env.MAIL\u URL=Meteor.settings['galaxy.Meteor.com'].env.MAIL\u URL