【发布时间】:2021-09-11 07:37:51
【问题描述】:
我有两个用户之间的通信渠道,我使用 Firebase 存储在这些用户之间传输文件。 我不希望第三个用户访问频道的文件。
我正在尝试使用“authfile”和其中的元数据来识别授权用户。 该身份验证文件是使用 admin sdk 上传的。
只有特定用户才能下载和上传文件到存储中 authfiles 元数据包含其 uid 的特定路径。仍然不允许用户触摸 authfile。
authfile 中的元数据如下所示:
metadata: {
AvnYaUFdaJh1j0FMIiKWoIC2MDw1: true, // firebase userId 1
YhFyYRbutlf1PFI4NLKTN4qWRhQ2: true, // firebase userId 2
}
我尝试过的规则:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
// Channel Media
match /media/{channelId}/{allPaths=**} {
function isAllowedUser(uid) {
return /authfile.resource.metadata.users[uid] == true;
}
allow delete: if isAllowedUser(request.auth.uid)
&& request.resource.contentType != 'authfile'
allow read: if isAllowedUser(request.auth.uid)
&& request.resource.contentType != 'authfile'
allow write: if isAllowedUser(request.auth.uid)
&& request.resource.contentType != 'authfile'
&& request.resource.size < 16 * 1024 * 1024;
}
}
}
我是第一次编写 Firebase 存储规则,希望得到有关如何实施的建议。
【问题讨论】:
标签: firebase firebase-storage firebase-security