如何通过Firebase安全规则阻止Users集合文档删除,及能否禁止Firebase Console删除该集合文档?
如何通过Firebase安全规则禁止Users集合文档被删除
我来帮你搞定这个需求——要让Users集合里的所有账号文档永远无法被删除,哪怕是管理员在Firebase Console里操作也不行,咱们从规则配置和控制台限制两方面来说:
一、配置Firebase安全规则实现禁止删除
首先要注意一个细节:Firestore的集合名称是区分大小写的,你当前规则里写的是/USERS/{userId},如果你的实际集合是Users,一定要改成完全一致的名称,否则规则不会生效。
完整规则示例
如果想保留Users集合的读写权限,但彻底禁止删除,可以用下面的规则:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { // 针对Users集合(名称务必和实际集合一致) match /Users/{userId} { allow read, write: if true; // 保留读写权限,不需要的话可以调整为具体条件 allow delete: if false; // 核心:永远拒绝删除请求 } // 如果其他集合需要保持原来的开放权限,加上这段 match /{document=**} { allow read, write; } } }
规则说明
allow delete: if false;这个条件永远无法满足,所以任何发起删除Users集合文档的请求(不管是SDK调用还是控制台操作)都会被安全规则拦截。- 如果你不需要开放Users集合的读写权限,可以把
allow read, write改成具体的权限条件,或者直接移除(默认拒绝),但核心的allow delete: if false;一定要保留。
二、能否禁止Firebase Console删除?
当然可以!Firebase Console里的文档操作完全遵守安全规则,不管是普通开发者还是项目管理员,只要规则里设置了allow delete: if false;,在控制台尝试删除Users集合的文档时,系统会直接提示权限不足,无法完成删除操作。
哪怕是项目所有者,也没办法绕过这个规则——安全规则是Firestore层面强制执行的,所有操作都必须符合规则要求。
注意事项
- 一定要确认集合名称大小写匹配,否则规则会对目标集合无效。
- 修改规则后记得点击Firebase控制台规则编辑器里的「发布」按钮,确保规则生效。
- 如果之后需要临时开放删除权限(比如特殊维护),只能修改安全规则,所以要控制好规则修改的权限,避免被误改。
内容的提问来源于stack exchange,提问作者Taha Sami
相关产品推荐
相关产品推荐

