Ilj*_*lja 5 node.js firebase google-cloud-functions firebase-admin
我们如何通过仅允许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" }
});
Run Code Online (Sandbox Code Playgroud)
admin.initializeApp(functions.config().firebase)在上面和functions.config()实际获取数据的地方有什么好处,这不仅仅是一个节点模块吗?
jwn*_*ngr 11
通常,在Cloud Functions代码的顶部,您有:
var functions = require('firebase-functions');
Run Code Online (Sandbox Code Playgroud)
作为firebase-functions节点模块的一部分,您可以访问functions.config().firebase一个对象,该对象具有初始化Admin SDK所需的一切,包括数据库URL和凭证实现(基于Application Default Credentials).如果您console.log(functions.config().firebase)在代码中,您将看到它只是具有这些属性的对象以及您可能希望在代码中使用的其他一些属性.
您可以添加databaseAuthVariableOverride到此对象以限制Admin SDK的权限.你可以只覆盖对象本身:
var firebaseConfig = functions.config().firebase;
firebaseConfig.databaseAuthVariableOverride = {
uid: 'some-uid',
foo: true,
bar: false
};
admin.initializeApp(firebaseConfig);
Run Code Online (Sandbox Code Playgroud)
或者您可以使用类似的Object.assign()功能将相关详细信息复制到新对象:
var firebaseConfig = Object.assign({}, functions.config().firebase, {
databaseAuthVariableOverride: {
uid: 'some-uid',
foo: true,
bar: false
}
});
admin.initializeApp(firebaseConfig);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1523 次 |
| 最近记录: |