Firebase 文件夹的存储权限

Cha*_*iya 4 android firebase firebase-security firebase-authentication firebase-storage

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

{  "error": {    "code": 403,    "message": "Permission denied. Could not perform this operation"  }}
Run Code Online (Sandbox Code Playgroud)

我的规则

service firebase.storage {
match /b/{bucket}/o {
  match /{userId} {
    match /{allPaths=**}{
     allow read, write: if request.auth.uid == userId;
    } 
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

代码片段

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

 //rest of upload task here..
Run Code Online (Sandbox Code Playgroud)

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

Sac*_*oma 5

您需要为此添加 firebase 身份验证。之后添加此权限。请参阅此链接Firebase 云存储安全规则参考

结论是您缺少 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;
    } 
   }
 }
}
Run Code Online (Sandbox Code Playgroud)