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

跨Firestore多数据库配置规则时遭遇权限拒绝问题求助

跨Firestore多数据库配置规则时遭遇权限拒绝问题求助

我最近在配置Firestore安全规则时碰到了一个百思不得其解的问题,想向大家求助。

我的需求是:让用户只能访问次级数据库中特定集合的内容,而这个集合路径里必须包含一个存放在默认数据库中的ID。

默认数据库里有这样一份用户文档:

users/abcd:
{ 
  companyId: 'efgh'
}

针对次级数据库,我写了这样的规则:

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    function getUserCompany() {
        return get(/databases/(default)/documents/users/$(request.auth.uid)).data.companyId;
    }
    
    match /co/{cid}/{documents=**} {
        allow read, write: if getUserCompany() == cid
    }
  }
}

当我用UID为abcd的用户完成认证后,在次级数据库执行如下调用:

getDoc('/co/efgh/some/document')

结果却返回了权限错误:FirebaseError: Missing or insufficient permissions。

但几个测试场景却都是正常的:

  • 用Firebase的规则Playground测试这个调用,能够成功通过权限校验;
  • 如果把这套规则直接放到默认数据库中,在默认数据库执行同样的getDoc()调用,也能正常获取数据。

只有在使用JavaScript Firebase客户端(版本10.4.0)认证后访问次级数据库时,才会出现这个权限不足的问题。

想请教各位,这种跨数据库读取数据的安全规则配置本身是支持的吗?还是我哪里的配置或者调用方式出了问题?

备注:内容来源于stack exchange,提问作者lambinator

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:52:59