gpt4 book ai didi

node.js - 仅允许对 Cloud Functions for Firebase 进行写访问

转载 作者:搜寻专家 更新时间:2023-10-31 22:37:43 24 4
gpt4 key购买 nike

我们如何通过仅允许 Cloud Functions for Firebase 将数据写入特定位置的规则来保护数据库,之前有一个选项可以将 uid 添加到管理客户端 databaseAuthVariableOverride 并在规则中使用该 uid部分,但现在我们通过 admin.initializeApp(functions.config().firebase); 进行初始化,所以我不确定如何添加额外的参数。

编辑为此用证书启动是个好主意吗?即

admin.initializeApp({
credential: admin.credential.cert("/path-to-cert"),
databaseURL: "database-url",
databaseAuthVariableOverride: { uid: "some-id" }
});

admin.initializeApp(functions.config().firebase) 比上面有什么好处,functions.config() 实际上从哪里获取数据,不是吗?这不只是一个 Node 模块吗?

最佳答案

通常,在您的 Cloud Functions 代码的顶部,您有:

var functions = require('firebase-functions');

作为 firebase-functions Node 模块的一部分,您可以访问 functions.config().firebase这只是一个对象,其中包含初始化 Admin SDK 所需的一切,包括您的数据库 URL 和凭据实现(基于应用程序默认凭据)。如果您在代码中使用 console.log(functions.config().firebase),您会看到它只是一个具有这些属性的对象,以及您可能希望在代码中使用的其他一些属性。

您可以添加 databaseAuthVariableOverride到这个对象limit the Admin SDK's privileges .您可以只覆盖对象本身:

var firebaseConfig = functions.config().firebase;
firebaseConfig.databaseAuthVariableOverride = {
uid: 'some-uid',
foo: true,
bar: false
};
admin.initializeApp(firebaseConfig);

或者你可以使用类似 Object.assign() 的东西将相关详细信息复制到新对象:

var firebaseConfig = Object.assign({}, functions.config().firebase, {
databaseAuthVariableOverride: {
uid: 'some-uid',
foo: true,
bar: false
}
});
admin.initializeApp(firebaseConfig);

关于node.js - 仅允许对 Cloud Functions for Firebase 进行写访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com