我正在使用Cloud Function for Firebase。当我使用admin.database().ref
时,将忽略应用于数据库的所有规则。有了admin,我可以做任何事情。要明确:
我有一个实时数据库,有一套规则,如; name必须是字符串和长度> = 50,...
使用SDK时,所有无效数据都将被拒绝。但是当我开始使用firebase云功能(通过提供一组https端点来减少客户端的工作)时,它已经不再适用了。
所以,我想知道是否有办法让它发挥作用?我在考虑:
admin.database()
的内容(看一看
已经event.data.ref
但这在我的情况下不起作用 - HTTP请求)你能给我一些提示/线索吗?
答案 0 :(得分:1)
这是Firebase管理SDK的预期默认行为:代码以管理权限访问数据库。
如果要限制代码的功能,可以将其初始化为特定的UID运行。来自Authenticate with limited privileges的文档:
要对Firebase应用实例可以访问的资源进行更细粒度的控制,请使用安全规则中的唯一标识符来表示您的服务。
...
然后,在您的服务器上,初始化Firebase应用时,使用
databaseAuthVariableOverride
选项覆盖数据库规则使用的auth对象。在此自定义身份验证对象中,将uid字段设置为您在安全规则中用于表示服务的标识符。// Initialize the app with a custom auth variable, limiting the server's access admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: "https://databaseName.firebaseio.com", databaseAuthVariableOverride: { uid: "my-service-worker" } });
请参阅完整示例的链接文档。