Firebase Realtime Database防止删除-基于条件

时间:2019-10-01 13:31:53

标签: firebase-realtime-database firebase-security

我想根据情况防止在Firebase实时数据库中删除数据。 不是作者的用户应该能够更新“注释”,但不能删除它。

我的数据库中有一个“注释”集合,该集合具有以下规则集。

IActionResult

如何仅允许“作者”删除“注释”?

我曾尝试使用Google Cloud Functions for Firebase,但只有在已经执行删除后,才可以访问.onDelete()事件,该事件在上运行。我可以为此使用.onWrite(),如果可以的话,如何使用?我已经为数据库中的 / notes 节点实现了.onCreate().onUpdate()和.onDelete()的侦听器。

致以问候,柯密特

2 个答案:

答案 0 :(得分:1)

使用Cloud Functions不可能在传入请求影响数据库之前拦截传入请求。如您所见,它们仅用于后处理。

如果安全规则不足以控制您想要的访问方式,请考虑通过HTTP类型的Cloud Function(用于检查权限的路由)路由请求,然后执行删除或拒绝请求。

答案 1 :(得分:0)

我猜想一些Firebase规则

".write" : "
  //Create
  !data.exists() && auth.uid !== null
  //Update
  ||(data.exists() && newData.exists() && data.child('access').child('author').val() === auth.uid || data.child('access/members').child(auth.uid).exists())
  //Delete
  ||(data.exists() && !newData.exists() && data.child('access').child('author').val() === auth.uid)
"

如果用户不是作者,是否可以阻止删除?