如何使firebase数据库规则与admin.database().ref(云函数)一起使用



我正在使用Firebase的云功能。当我使用admin.database().ref时,将应用于数据库的所有规则被忽略。使用管理员,我可以做任何事情。要清楚:

我有一个实时数据库,其中包含一组规则,例如;名称必须是字符串,长度> = 50,...

使用SDK时起作用,所有无效数据将被拒绝。但是,当我移动使用firebase云功能(通过提供一组HTTPS端点来减少客户端的工作),它不再起作用。

所以,我想知道是否有任何方法可以使它起作用?我在想:

  1. 找到admin.database()替换的东西(看看 event.data.ref已经不起作用,在我的情况下这不起作用-http请求)
  2. 验证云功能中的数据(不好)

您能给我一些提示/线索吗?

这是Firebase Admin SDKS的预期默认行为:代码访问具有管理特权的数据库。

如果要限制代码可以做的事情,则可以将其初始化以作为特定的UID运行。从具有有限特权的身份验证的文档中:

为了获得对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"
  }
});

请参阅链接的文档以获取完整的示例。

相关内容

  • 没有找到相关文章

最新更新