我们如何通过规则来保护数据库,只允许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" }
});
< p > admin.initializeApp(functions.config().firebase)
相对于其他方法有什么好处?functions.config()
从哪里获取数据,这不只是一个Node模块吗?
Object.assign()
的参数顺序很重要。在极少数情况下,如果functions.config().firebase
包含databaseAuthVariableOverride
属性,则会覆盖您上面指定的属性。我建议使用Object.assign({}, functions.config().firebase, { /* your overriding values */ })
来确保您设置的任何内容都作为最终值保留。 - samthecodingmanfunctions.config().firebase
提供的凭据相比,没有任何好处。而且这需要你自己管理服务帐户密钥文件,这通常是不好的做法。@samthecodingman - 感谢你的提示。我已经更新了我的代码示例。 - jwngr