【发布时间】:2018-12-14 20:01:54
【问题描述】:
我正在为我的应用程序创建管理员凭据,模型非常简单,它具有用户名和密码属性以及一些验证。我有一个函数可以将一些信息填充到数据库中。
async function init() {
const admin = new Admin({
username: "admin",
password: "12345"
});
const salt = await bcrypt.genSalt(10);
admin.password = await bcrypt.hash(admin.password, salt);
try {
await admin.save({ username: admin.username });
} catch (ex) {
console.log(ex.message);
}
}
但是,通过这种方法,我将密码保存在我的源代码中,我不希望这样。我在想也许我可以使用 config 包将我的管理员密码存储在环境变量中。
我尝试了以下方法:
-
创建了一个 default.json 文件:
{ "adminPassword": "" } -
创建了一个 custom-environment-variables.json 文件:
{ "adminPassword": "fifteen_adminPassword" } 然后将我的代码修改为:
const admin = new Admin({
username: "admin",
password: config.get("adminPassword")
});
最后我设置了环境变量export fifteen_adminPassword=12345,但是在我进行身份验证时这会因为密码无效而失败。
【问题讨论】:
-
您是否验证过
config.get("adminPassword")返回了预期的结果?有没有可能是undefined?config实现是什么样的? -
如何查看
config.get("adminPassword")返回的内容?config实现看起来就像我在原始帖子中解释的那样,我还有其他属性,但它们与这个问题无关,这就是我没有包括它们的原因。 -
您可以调试解决方案并检查值,也可以简单地
console.log(config.get("adminPassword"))。 -
嗯,它返回“1212345”,这不是我在环境变量中设置的密码。所以为了覆盖这个我跑了
export fifteen_adminPassword=12345。我这样做了,现在它在控制台中返回 12345,但是当我尝试进行身份验证时仍然收到无效密码错误... -
好吧,这更近了一步 :) admin-user 创建工作正常吗?密码加密有问题吗?
标签: javascript node.js environment-variables config