【问题标题】:Firestore rules objectsFirestore 规则对象
【发布时间】:2019-01-09 05:52:49
【问题描述】:

我正在尝试在我的数据库中设置一些基本的 Firestore 安全规则。我在查找相关文档以了解如何执行此操作时遇到了一些麻烦。

目前我的文档结构如下:

project(document): {
  createdBy(string): chris@emailaddress.com,
  users(object): {
    { graham@emailaddress.com(object): access: write },
    { paul@emailaddress.com(object): access: read }
  }
}

我想设置我的规则以便

  • 用户必须登录才能读取、写入或删除任何内容

  • 如果将用户添加到具有“读取”访问权限的项目中,则他们只能读取文档。

  • 如果用户设置了写访问权限,他们可以更新和读取文档,但不能更新 createdBy 字段。

  • 如果用户创建了文档,他们可以阅读、更新和删除文档。

我的安全规则是这样设置的:

service cloud.firestore {
  match /databases/{database}/documents {
    match /projects/{projectId} {
      allow read: if existingData().users[getUser()token.email].access != null && isSignedInAndVerified()
      allow read, update: if existingData().users[getUser()token.email].access != "write" && isSignedInAndVerified()
      allow update, delete: if sameAsEmail(existingData().createdBy) && isSignedInAndVerified()
    }
    //my functions
    function getUser(){
      return request.auth
    }
    function existingData(){
      return resource.data
    }
    function sameAsEmail(resource){
      return resource == request.auth.token.email
    }
    function isSignedInAndVerified() {
      return request.auth != null && request.auth.token.email_verified;
    }
  }
}

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-security


    【解决方案1】:

    语法使用不正确:改为getUser().token.email

    【讨论】:

      猜你喜欢
      • 2018-05-25
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 2019-04-18
      相关资源
      最近更新 更多