如何通过Firestore规则实现App仅展示用户本人上传的照片
问题排查
你当前不生效的规则存在两个核心错误:
- 直接将用户uid和固定字符串
'byId'做相等判断,而非读取目标文档中存储的byId字段值进行对比 - 全局通配符
/{document=**}虽然可以生效,但优先建议明确限定业务集合范围,避免影响后续其他集合的权限配置
修复后的规则
service cloud.firestore { match /databases/{database}/documents { // 可根据你实际的照片集合名称修改此处的集合名 match /photos/{photoId} { // 读写权限校验:已登录 + 当前用户uid等于文档存储的byId字段 allow read, update, delete: if request.auth != null && request.auth.uid == resource.data.byId; // 新增写入校验:确保新上传的照片byId字段是当前登录用户自己的uid,防止恶意伪造归属 allow create: if request.auth != null && request.resource.data.byId == request.auth.uid; } } }
生效校验说明
- 规则修改后最长可能有1分钟延迟生效,测试前建议等待1分钟再验证
- 可以使用Firebase控制台内置的「规则游乐场」功能,模拟指定uid的请求访问对应文档,快速验证规则是否符合预期
内容的提问来源于stack exchange,提问作者Duhflashh
相关产品推荐
相关产品推荐

