Firebase中如何设置proposals集合仅知晓ID才可读取对应文档?
这个需求在Firebase中完全可以实现,你遇到的问题是没有拆分read权限的细粒度控制逻辑。
Firebase安全规则中,read是复合权限,等价于同时授予get+list两类权限:
get:对应单文档读取请求,仅当用户传入明确的文档ID发起读请求时生效list:对应所有集合级别的列表/查询请求,包含全集合拉取、带筛选条件的集合查询等
你当前的配置存在逻辑冲突:安全规则的判定逻辑是只要任意一条allow规则满足就放行,你配置了allow read: if true,等于同时给get和list都开放了权限,即使前面单独设置了allow list: if false也会被这条规则覆盖,导致列表权限被意外放开。
你只需要把read权限替换为细粒度的get权限即可,正确配置如下:
match /proposals/{uid} { allow list, update, delete: if false; allow create, get: if true; }
配置完成后即可达到预期效果:
- 知道文档ID的单文档读取请求可以正常返回数据
- 所有集合级别的列表/查询请求都会被权限拦截
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

