首页 > 解决方案 > 文件夹的 Firebase 存储权限

问题描述

我正在尝试将音频文件上传到我的 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..

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

标签: androidfirebasefirebase-authenticationfirebase-storagefirebase-security

解决方案


您需要为此添加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;
    } 
   }
 }
}

推荐阅读