我想将游戏事件和审核日志从我的应用程序写入Cloud Firestore。编写完成后,我不希望用户能够修改或删除这些事件/日志。
我该怎么做?
答案 0 :(得分:2)
Cloud Firestore中的规则使得将集合甚至整个数据库制作成仅来自移动设备的附加系统变得非常简单。网络客户。
以下是一组将根集合audit_logs
转换为仅附加集合的规则。
service cloud.firestore {
match /databases/{database}/documents/ {
function permission_granted() {
return request.auth != null; // Change this to your logic.
}
match /audit_logs/{log} {
allow update,delete: if false;
allow read, create, list: if permission_granted();
}
}
}
让我们分解最重要的部分。
function permission_granted() {
return request.auth != null; // Change this to your logic.
}
这个只是一个占位符,但您想要限制插入新文档或读取集合中的现有文档。在这种情况下,它允许任何使用Firebase Auth登录的人 - >您可能希望它更具限制性。
它只会返回true
或false
,我们稍后会用它来实际执行。
match / audit_logs / {log} { ... }
这个很简单,我们只是针对有关名为audit_logs
的根集合的任何请求进行匹配。由于$(log)
作品,问题中的文档ID可通过{log}
提供。
allow update,delete: if false;
不仅仅附加的2种写入方法是update
和delete
,所以这里我们通常不允许任何移动& Web SDK执行它们。
allow read, create, list: if permission_granted();
最后,使用我们之前设置的permission_granted
函数,我们允许在集合中阅读,列出和创建新文档。