Firestore安全规则配置:允许更新当数组/Map不含用户UID
Firebase Firestore安全规则:两种更新权限场景配置
没问题,我帮你整理了符合需求的Firestore安全规则配置,还加上了必要的用户登录校验(毕竟未登录用户不应该有更新权限):
场景1:仅当目标数组中不包含请求用户UID时允许更新
假设你的文档中有一个名为blockedUsers的数组字段,你希望用户只能在自己不在这个数组里的时候更新文档,规则可以这么写:
match /your-collection/{docId} { allow update: if request.auth != null && request.auth.uid not in resource.data.blockedUsers; }
解释:
request.auth != null:确保请求来自已登录的合法用户request.auth.uid not in resource.data.blockedUsers:检查当前用户的UID不在目标数组(这里是blockedUsers)中,满足条件才允许更新操作
场景2:仅当目标Map类型数据中不包含请求用户UID(作为Map的键)时允许更新
如果你的文档中有一个名为authorizedEditors的Map字段(比如键是用户UID,值是权限信息),你希望用户只能在自己的UID不是这个Map的键时执行更新,规则如下:
match /your-collection/{docId} { allow update: if request.auth != null && request.auth.uid not in resource.data.authorizedEditors.keys(); }
解释:
resource.data.authorizedEditors.keys():获取Map字段的所有键的集合request.auth.uid not in ...:判断当前用户的UID不在这些键当中,满足条件则允许更新
注意:记得把规则中的your-collection、blockedUsers、authorizedEditors替换成你实际的集合名称和字段名哦。
内容的提问来源于stack exchange,提问作者Rohin
相关产品推荐
相关产品推荐

