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

如何配置Firestore规则,让用户仅能访问以其UID命名的集合?

Firestore安全规则配置:限制用户仅访问匹配自身UID的集合

当前可实现的规则配置

你可以通过Firestore规则的字符串处理能力,解析集合名称中的UID并与当前认证用户的UID做对比,实现所需的权限控制。以下是具体的规则示例:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // 匹配所有以friends_开头的集合及其下所有文档
    match /{coll}/{document=**} {
      allow read, write: if 
        // 确保用户已完成身份认证
        request.auth != null 
        // 校验集合名称格式为friends_UID格式
        && coll.matches('^friends_([a-zA-Z0-9_-]+)$')
        // 提取集合名称中的UID,与当前用户UID对比
        && coll.split('_')[1] == request.auth.uid;
    }
  }
}

规则说明

  • coll.matches('^friends_([a-zA-Z0-9_-]+)$'):用正则约束集合名称必须以friends_开头,后面跟随合法格式的UID(适配Firebase UID的字符范围)。
  • coll.split('_')[1]:将集合名称按下划线分割,提取出后面的UID部分,与request.auth.uid(当前认证用户的UID)做一致性校验。
  • request.auth != null:确保只有已登录的用户才能进行读写操作。

关于可行性的说明

当前这种权限控制是完全可以实现的,所谓“无法实现”的评论可能是对Firestore规则的字符串处理能力不了解导致的误解。

从Firestore的发展趋势来看,规则系统只会持续优化和增强灵活性,这类基于资源名称的权限匹配逻辑不仅现在稳定可用,未来也会继续得到支持,甚至可能出现更简洁的语法来简化这类场景的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:10:13