gpt4 book ai didi

Firebase 存储通配符规则

转载 作者:行者123 更新时间:2023-12-03 06:39:21 24 4
gpt4 key购买 nike

我目前正在使用 NodeJS、HTML 和 Firebase 编写一个网站,用于数据库服务、身份验证和存储。我目前遇到的问题是,根据我对文档的解释,Firebase 存储规则不起作用。

我的 Firebase 存储实例的目录结构如下(明显是假 uid):

/
└─ users/
├─ a67dhfa7dhf96/
│ ├─ picture.jpg
│ └─ private/
│ └─ privateDetails.txt
└─ h9dh91hf7edgn/
├─ picture.jpg
└─ private/
└─ privateDetails.txt

我想这样做,以便任何用户都可以读取存储在不同用户文件中的文件,无论他们是否经过身份验证,然后使私有(private)文件夹中的文件仅可供登录用户使用。我当前的 Firebase 存储规则如下所示:

service firebase.storage {
match /b/{bucket}/o {
match /users/{userId} {
match /* {
allow read;
}
match /private {
allow read, write: if request.auth != null;
}
}
}
}

根据这些规则,无论文件是否位于私有(private)目录中,如果不使用 Firebase Storage 提供的自定义下载 token ,我总是会在任何文件上收到 403:“权限被拒绝。无法执行此操作”。我还尝试了以下规则,也导致每个文件都返回 403。

service firebase.storage {
match /b/{bucket}/o {
match /users/{userId}/* {
allow read;
}
match /users/{userId}/private {
allow read, write: if request.auth != null;
}
}
}

为什么这些规则集没有发挥应有的作用?

最佳答案

您应该使用wildcards匹配 /users/{userId}/*

service firebase.storage {
match /b/{bucket}/o {
match /users/{userId} {
match /{imageId}{
allow read;
}
match /private/{imageId}{
allow read, write: if request.auth != null;
}
}
}
}

关于Firebase 存储通配符规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48954845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com