Firebase-同一Firebase项目中多个托管网站的不同规则

时间:2019-10-02 12:53:40

标签: firebase firebase-authentication firebase-security

与主网站(myurl.com)相比,我的管理控制台(admin.myurl.com)可能有不同的规则吗?这两个网站都将托管在同一个Firebase项目中。

我希望创建一个管理仪表板,管理员用户(具有superAdmin的自定义声明的用户)可以在网站上CRUD帖子和事件等。

非管理员用户还可以在主站点上创建和编辑事件,但不能发布事件,因此我需要向管理仪表板添加不同的规则,以阻止非管理员访问它!

任何指导将不胜感激。

干杯!

2 个答案:

答案 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