[英]Correctly hiding database credentials
如您所见,我有我的 db 连接文件和另一个“受保护”文件,我的凭据所在的位置,并且该文件包含在 .gitignore 中。 我导入它并到达数据。 很基本。 因此我的问题是:
当前代码:
const mongoose = require("mongoose");
const mongoCredentials = require("../protected/mongoCredential");
const URI = `mongodb+srv://${mongoCredentials.username}:${mongoCredential.password}
@firstcluster-eldi8.mongodb.net/culturapp?retryWrites=true&w=majority`;
mongoose.connect(URI, { useUnifiedTopology: true, useNewUrlParser: true })
.then(db => console.log("MongoDB is connected"))
.catch(err => console.log(">> ERROR: ",err));
module.exports = mongoose;
...我有我的 db 连接文件和另一个“受保护”文件,我的凭据所在的位置,并且该文件包含在 .gitignore 中。 我导入它并到达数据..
正确的做法是使用环境变量。
环境变量是在环境中设置的,即您的本地开发机器或远程生产服务器。 然后,在您的应用程序中,您读取环境变量并适当地使用它们。
通常这样做有(至少)几个原因:
以下是设置环境变量的方法(这是针对 Linux 的,其他操作系统可能会有所不同):
$ export MONGO_DB_USERNAME=foo
$ export MONGO_DB_PASSWORD=bar
以下是您在 Node.js 中阅读它们的方式:
console.log(process.env.MONGO_DB_USERNAME) // logs 'foo'
console.log(process.env.MONGO_DB_PASSWORD) // logs 'bar'
或者,您可以在启动过程时传递变量,如下所示:
$ MONGO_DB_USERNAME=foo MONGO_DB_PASSWORD=bar node app.js
但是,通常不鼓励这样做,因为您很可能是通过npm start script开始您的流程。 由于定义了npm start
命令的package.json
始终提交到存储库,因此无法实现隐藏凭据的全部目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.