我想根据情况防止在Firebase实时数据库中删除数据。 不是作者的用户应该能够更新“注释”,但不能删除它。
我的数据库中有一个“注释”集合,该集合具有以下规则集。
IActionResult
如何仅允许“作者”删除“注释”?
我曾尝试使用Google Cloud Functions for Firebase,但只有在已经执行删除后,才可以访问.onDelete()事件,该事件在上运行。我可以为此使用.onWrite(),如果可以的话,如何使用?我已经为数据库中的 / notes 节点实现了.onCreate().onUpdate()和.onDelete()的侦听器。
致以问候,柯密特
答案 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)
"
如果用户不是作者,是否可以阻止删除?