Firestore规则和Firestorage规则之间的区别是什么?

时间:2018-11-15 16:09:01

标签: firebase firebase-realtime-database google-cloud-firestore

我有要确保安全的文件,一旦管理员将文件上传到存储中,只有他和与之共享文件的用户才能访问下载该文件的链接。因此,根据Firestore规则,我添加了以下内容:

match /users/{userID} {
  		allow read: if isOwner(userID) || isAdmin();
  		allow write: if isOwner(userID) || isAdmin();
		}
    
    /// FUNCTIONS BELLOW ///
    
    function isAdmin() {
     return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.IsAdmin;
    }

但是,当我尝试在Firestorage下添加相同的规则时,访问会不断被拒绝。

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read: if isAdmin();
  		allow write: if isAdmin();
    }
    
     /// FUNCTIONS BELLOW ///
    
    function isAdmin() {
     return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.IsAdmin;
    }
  }
}

Firestorage get方法和Firestore get方法的工作方式不同吗? 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

没有(CComplex,int),实际上有 Cloud Firestore (这是Google的新数据库), Firebase Storage (用于存储图像)的规则,音频,视频或其他用户生成的内容以及 Fireabse实时数据库,它也是NoSQL数据库。

  

安全规则以简单但具有表现力的格式提供访问控制和数据验证。

  

存储安全性规则用于确定谁对存储在Cloud Storage中的文件具有读写访问权,以及文件的结构方式和包含的元数据。

  

Firebase实时数据库规则确定谁拥有对数据库的读写访问权限,数据的结构方式以及存在的索引。这些规则位于Firebase服务器上,并始终自动执行。

答案 1 :(得分:0)

我猜您是在谈论Firebase Cloud StorageFirestore

云存储规则的问题是您无法访问Firestore数据库。如果您需要保留数据以帮助授权写操作,则可以查看custom claims,您可以在安全规则中使用auth.token.admin === true进行访问,例如,查看管理属性的用户auth令牌< / p>

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read: if isAdmin();
      allow write: if isAdmin();
    }

    /// FUNCTIONS BELLOW ///

    function isAdmin() {
      return auth.token.admin === true
    }
  }
}