连接到 Heroku node.js 应用程序中的数据库,而不在 git 上显示身份验证详细信息

Posted

技术标签:

【中文标题】连接到 Heroku node.js 应用程序中的数据库,而不在 git 上显示身份验证详细信息【英文标题】:Connect to the database in a Heroku node.js app without revealing authentication details on git 【发布时间】:2013-09-06 23:55:09 【问题描述】:

我有一个推送到 Heroku 的 node.js 应用程序。它使用 MongoDB 进行存储。 Heroku 提供了一个免费的 MongoDB 作为您的应用程序可以连接的插件。现在我的问题是,由于连接字符串是这种格式:mongodb://dbuser:dbpass@host:port/dbname,并且由于 Heroku 使用 git 推送,我如何将我的代码推送到公共 GitHub 存储库而不透露我的每个人的用户名和密码?

有没有办法让数据库打开,只能打开来自我的 Heroku 应用程序的连接?

我不得不承认我对整个事情很困惑。

【问题讨论】:

【参考方案1】:

您需要在 Heroku 开发中心阅读 Configuration and config vars。 Heroku 期望并鼓励您使用配置变量(在 Heroku 应用程序本身而不是在代码库中配置)来保护密码等敏感数据。使用heroku config:set VARIABLE=value,但请注意,大多数 Heroku 插件在配置时会自动将身份验证信息添加到您的配置变量中。您可以通过heroku config 命令查看已设置的内容。

使用节点,您可以使用process.ENV.VARIABLE 访问您的环境变量,其中VARIABLE 是您尝试访问的环境/配置变量的名称。

最后一点,您可以在项目目录中将本地环境变量添加到.env(将文件添加到.gitignore!)...当您使用foreman startforeman run 时,工头会加载这些。

【讨论】:

这太棒了又实用!谢谢【参考方案2】:

如果你运行:

    heroku config

工具带将显示环境变量,这样您就可以在代码中使用环境变量:

    process.env.VARIABLE

【讨论】:

以上是关于连接到 Heroku node.js 应用程序中的数据库,而不在 git 上显示身份验证详细信息的主要内容,如果未能解决你的问题,请参考以下文章

Node.js - 在 Heroku 上使用 MongoHQ 连接到 MongoDB

Heroku 上的 Node.js Express 应用程序不会使用 Mongoose 连接到 MongoLab 数据库

无法在 heroku 上使用 node.js 连接到 mongolab

从 Heroku 连接到 MongoDb 时应用程序超时

Node.js 无法从 Heroku 连接到 mongodb 3 到 Mongolab:SCRAM-SHA-1

使用 mongoose 和 Fixie(Heroku 插件)连接到 mongodb