android - 文件夹的 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..
当我将规则设置为公共访问时,上传代码完美运行。有人可以帮我弄清楚我写的规则有什么问题吗?
解决方案
您需要为此添加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;
}
}
}
}
推荐阅读
- mongodb - 在 Mongodb 中存储 protobuf java 对象的简单方法?
- objective-c - 如何从Objective-C中的异步内部函数内部返回外部函数
- javascript - 谷歌图表轴顺序
- java - listOf() 返回 MutableList
- python - 具有相同类型的多个参数
- android - Android NDK - 在 Visual Studio 中添加更多目标 API 级别
- azure-devops - Task.Json 仅在不可见字段上触发验证
- java - 二分搜索与顺序搜索
- javascript - 将javascript转换为json?
- javascript - 保留复选框 d3 中未选中选项的数据