当前位置: 首页 > 知识库问答 >
问题:

将管理员权限添加到firebase规则

公羊宇定
2023-03-14

我已经为用户设置了firebase规则,以便向数据库读取和写入数据。现在我想为管理员用户添加另一条规则。

我允许用户通过身份验证进行访问。uid,并希望为管理员用户设置另一个级别。

以下是我目前的规则:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

我通过url中的$uid获取数据,如下所示:

`https://blablabla.firebaseio.com/users/${uid}/places.json?auth=` + authToken

用户通过电子邮件和密码注册。有没有一种方法可以添加一个特定的用户作为管理员,并设置另一个规则来访问所有的数据?

共有1个答案

屈博
2023-03-14

我通常在规则中创建一个isAdmin函数,然后可以从任何地方调用该函数。以下是最近一个项目的例子:

function isAdmin(request) {
  return request.auth.uid == "KqEizsqUQ6XMkUgLUpNxFnzLm4F3"
      || request.auth.uid == "zYXmog8ySOVRrSGVt9FHFr4wJb92"
      || (request.auth.token.email_verified && request.auth.token.email.matches(".*@google.com"))
      ;
}

所以在这个项目中,管理员组由两个UID和任何使用经过验证的谷歌电子邮件地址登录的人组成。

现在我可以在任何其他规则中使用这个函数,比如:

match /users/{uid} { 
  allow read: if true;
  allow create: if request.auth.uid == uid;
  allow delete: if isAdmin(request);
}

因此,任何人都可以阅读用户集合中的文档,每个用户都可以创建自己的用户文档,但只有管理员才能删除这些文档。

 类似资料:
  • 除了为每一个用户设置权限,权限管理员 为连接及其数据库对象的权限提供另一查看方式。注意:只限于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。 从用户的对象列表工具栏点击 权限管理员 并按照下列步骤进行: 在查看树展开节点直至到达目标对象。 选择对象并点击 添加权限 以打开窗口。 勾选用户以显示网格在右边的面板上。 在网格里,对照在 权限 列出的权限,勾

  • 除了在每个用户中设置权限,“权限管理员”提供另一种方式查看连接和其数据库对象的权限。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server、MariaDB 和 MongoDB。 若要添加权限,请在用户对象工具栏点击“权限管理员”并按照下列步骤: 在树视图展开节点直至到达目标对象。 选择对象并点击 “添加权限”以打开窗口。 在左侧窗格勾选用户。 在网格中,对照在“权

  • 除了在每个用户中设置权限,“权限管理员”提供另一种方式查看连接和其数据库对象的权限。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server、MariaDB 和 MongoDB。 若要添加权限,请在用户对象工具栏点击 并按照下列步骤: 在树视图展开节点直至到达目标对象。 选择对象并点击 以打开窗口。 在左侧窗格勾选用户。 在网格中,对照在“权限”列出的权限,勾选相关

  • 除了在每个用户中设置权限,“权限管理员”提供另一种方式查看连接和其数据库对象的权限。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server、MariaDB 和 MongoDB。 若要添加权限,请在用户对象工具栏点击“权限管理员”并按照下列步骤: 在树视图展开节点直至到达目标对象。 选择对象并点击 “添加权限”以打开窗口。 在左侧窗格勾选用户。 在网格中,对照在“权

  • 我正在尝试通过Windows Azure管理控制台生成一个API密钥,允许我请求Exchange日历数据(我需要访问Office 365 Exchange Online API集)。 我正在尝试解决这个问题 - 从我看到的帮助帖子中。不幸的是,我只有这些选择。 但是,我没有权限访问为我创建的应用程序设置的Office 365权限,我也想不出如何获得访问权限。我必须有一个Office 365组织帐户

  • 本文向大家介绍mongodb权限设置之添加管理员、普通用户的方法,包括了mongodb权限设置之添加管理员、普通用户的方法的使用技巧和注意事项,需要的朋友参考一下 我知道的关系型数据库都是有权限控制的,什么用户能访问什么库,什么表,什么用户可以插入,更新,而有的用户只有读取权限。 例如:mysql安装配置好后,有一个自带的mysql数据库,里面有一张user表,用来存放用户,以及用户权限,而mon