【问题标题】:Firebase Storage Permissions for Folder文件夹的 Firebase 存储权限
【发布时间】:2019-03-31 01:19:11
【问题描述】:

我正在尝试将音频文件上传到我的 Firebase 存储桶。
桶内有一个带有 user_id 的文件夹,它应该将文件上传到这个特定的文件夹,但问题是只有该用户应该能够访问他自己的文件夹。 我查看了文档并相应地设置了规则,但我似乎遇到了权限问题

{  "error": {    "code": 403,    "message": "Permission denied. Could not perform this operation"  }}

我的规则

service firebase.storage {
match /b/{bucket}/o {
  match /{userId} {
    match /{allPaths=**}{
     allow read, write: if request.auth.uid == userId;
    } 
   }
 }
}

代码片段

String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
StorageReference storageRef = FirebaseStorage.getInstance().getReference();
final StorageReference audioRef = storageRef.child("/ "+ userUid +"/"+filename());

 //rest of upload task here..

当我将规则设置为公共访问时,上传代码完美运行。 有人可以帮我弄清楚我写的规则有什么问题吗?

【问题讨论】:

    标签: android firebase firebase-authentication firebase-storage firebase-security


    【解决方案1】:

    您需要为此添加firebase身份验证。之后添加此权限。 参考这个链接Firebase Security Rules for Cloud Storage Reference

    得出的结论是您缺少 Firebase 存储分区名称。

    service firebase.storage {
    match /b/{Pass your firebase storage bucket name here}/o {
      match /{userId} {
        match /{allPaths=**}{
         allow read, write: if request.auth.uid == userId;
        } 
       }
     }
    }
    

    【讨论】:

    • 是的,我确实添加了 Firebase 身份验证,我可以在我的 firebase 控制台中看到 userUid。我应该在哪里添加这行代码? @Sachin Soma
    • 你应该在规则下添加它。
    • 您提到的规则似乎不是正确的类型,我收到以下错误。保存规则时出错 - 第 1 行:不匹配的输入 '{' 期望 {'function', 'service', 'rules_version'} @Sachin Soma
    • 您需要根据您的数据库结构编辑这些。audio_node_name 是您要为其添加权限的节点。
    • 我的 firebase 没有数据库。我只是想在存储级别存储文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多