与主网站(myurl.com)相比,我的管理控制台(admin.myurl.com)可能有不同的规则吗?这两个网站都将托管在同一个Firebase项目中。
我希望创建一个管理仪表板,管理员用户(具有superAdmin的自定义声明的用户)可以在网站上CRUD帖子和事件等。
非管理员用户还可以在主站点上创建和编辑事件,但不能发布事件,因此我需要向管理仪表板添加不同的规则,以阻止非管理员访问它!
任何指导将不胜感激。
干杯!
答案 0 :(得分:0)
您可以为此使用以下安全规则:
function signedInAdmin() {
return signedIn() && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.isAdmin == true;
}
function signedIn() {
return request.auth.uid != null;
}
match /{document=**} {
allow read, write, update, create: if signedInAdmin();
}
答案 1 :(得分:0)
每个项目每个产品只能有一组规则。如果您有两个连接到同一项目的站点,则它们将对他们的用户应用相同的规则集。
如果您需要为不同的用户设置不同的规则,则必须弄清楚如何为用户指定角色,以确定他们应该对数据库进行哪种访问。
如果您将Cloud Firestore用作数据库,请熟悉authentication based rules。实时数据库的类似文档为here。