You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore规则校验userId是否在数组中失效问题排查

Firestore权限校验函数失效问题排查

你的问题出在isAuthorizedForProject函数的用户权限判断逻辑上,具体错误如下:

  • 数组判断方式错误:你在函数里用doc.users[user] != null来检查用户是否在users数组中,但这个写法只适用于对象类型的存储(比如以uid为键值的映射)。而你的users字段是数组类型,正确的判断方式应该用user in doc.users,和你在Project文档本身的read规则里的写法保持一致。

修正后的权限校验函数

function isAuthorizedForProject(projectId) {
   let doc = get(/databases/$(database)/documents/Project/$(projectId)).data;
   let user = request.auth.uid;

   return doc.owner == user || (doc.users && user in doc.users);
}

补充说明

  1. 确认你的Project文档中users字段确实是数组类型(存储格式类似["userUid1", "userUid2"]),而非对象类型。
  2. 修正后,users数组内的用户访问Models和Fields子集合时,权限校验就能正常通过了。

内容的提问来源于stack exchange,提问作者chrispsv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:55:04