限制特定组的 Firebase 数据库和存储写入访问权限

2024-04-18

我有一个带有内容管理端的 React Redux Firebase 应用程序(所有这些页面都以/admin/...)。我需要将 Firebase 数据库和 Firebase 存储写入权限限制为这些用户的一小部分,并在未经身份验证(或未经管理员角色身份验证)的用户尝试访问那里时处理重定向。目前,任何发现身份验证按钮位于/admin可以使用 facebook 或 google 登录,然后就可以访问所有内容。

从我读到的内容看来,这是通过自定义令牌 https://firebase.google.com/docs/auth/admin/create-custom-tokens,但我不清楚将他们提供的片段放在哪里才能安全地执行此操作。我尝试手动添加admin: true通过 Web 控制台进入 firebase 数据库,然后设置我的 firebase 数据库规则,如下所示:

{
  "rules": {
    ".read": "true",
    ".write": "auth != null && root.child('users').child(auth.uid).child('admin').val() == true"
  }
}

这似乎在保护对数据库的写访问方面起作用,但我无法使用相同的管理字段/令牌进行 Firebase 存储,所以我必须这样做:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth!=null && request.auth.uid=="{my uid}";
      //request.auth.token.admin==true did not seem to work
    }
  }
}

我也无法理解admin: true显示在客户端上,所以我现在没有重定向的方法。

有人可以帮我解决这个问题吗?


限制访问的一种方法small(和稳定的)用户子集是通过使用他们的 uid 并检查它是否包含在管理员用户 uid 数组中,如下所示:

function isAdminUser() {
   return request.auth.uid in [
        "UcqBSJOPDT........zzaeh1",
        "pQHSCZ1........hS2mfKmd2", 
        "MK8kif7.......eEqJzUl2n1", 
        "FrSm................XI82"
    ];
}

service firebase.storage {
  match /b/xxxxxxx.appspot.com/o {
    match /{allPaths=**} {
      allow write: .....;
      allow read: if request.auth != null && isAdminUser();
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

限制特定组的 Firebase 数据库和存储写入访问权限 的相关文章

随机推荐

  • 如何通过 has_many 评论关系显示评分最高的专辑

    我正在设置一个简单的 ruby rails 应用程序 用户可以在其中查看相册 在相册的显示页面上 我通过相册控制器中的此代码对与该相册相关的所有用户评论进行平均 def show album Album find by id params
  • 在拟合 keras 模型时如何防止 loss: nan ?

    这是我的代码 model Sequential model add Dense 50 input dim 33 init uniform activation relu for u in range 3 how to efficiently
  • 如何在ggplot中包装图例文本?

    这是我的数据的头部 structure list aasta c 2012 2013 2014 2015 2016 2017 2018 2019 2020 2012 2013 2014 2015 2016 2017 2018 2019 20
  • JPA 标准 API 按 NULL 最后排序

    我使用 JPA 标准 API 从数据库中获取记录 我有实体Record带字段dateTime可以为空 我会编码 public List
  • Dapr 和 Docker Compose 指南

    我正在绕圈试图找出如何做到这一点 但我遇到了以下情况 我正在尝试将 Dapr 合并到我的 ASP NET Core 微服务中 我已按照文档在本地安装了 Dapr dapr init 结果我有三个本地运行的容器 dapr redis dapr
  • 训练 h2o 模型时如何抑制“构建进度”栏?

    我正在通过测试许多模型来调整我的参数 但令我相当恼火的是 我对那些弄乱了我的 iPython Notebook 的 构建进度 栏无能为力 我浏览了文档 寻找某种要关闭的 详细 设置 但找不到它 当我想同时训练和评估数十个模型时 有什么方法可
  • 使用 Thymeleaf 和 Spring Boot 转换器列出 JSON 字符串

    我正在开发一项通过 Thymeleaf 模板生成 HTML 页面的服务 在其中一个模板中 我希望有一个 HTML 属性作为 JSON 字符串 我的上下文中的相关对象是ArrayList
  • 如何在 Visual Studio 安装项目中创建卸载程序?

    我已经创建了一个 Visual Studio 安装项目 但我不知道如何在我的 Visual Studio 安装项目中创建卸载程序 请告诉我该怎么做 我正在使用 Visual Studio 2005 或者是否有任何其他软件可以使用卸载程序创建
  • Oracle JDBC:用户名/密码无效 (ora-01017)

    我在与 Oracle 数据库服务器的 jdbc 连接上遇到了一个奇怪的问题 我们在 tomcat 服务器上运行应用程序 这些应用程序使用 oracle 数据库 所有应用程序都使用相同的凭据 应用程序全天运行良好 晚上没有活动 早上 当应用程
  • 使用给定的 DateTime 对象获取一个月的第一天和最后一天

    我想获取给定日期所在月份的第一天和最后一天 该日期来自 UI 字段中的值 如果我使用时间选择器我可以说 var maxDay dtpAttendance MaxDate Day 但我试图从 DateTime 对象中获取它 所以如果我有这个
  • 更改 Android 上活动动画的 z 顺序

    有没有办法反转活动动画的 z 顺序 基本上 当您启动新活动时 它会被添加到后台堆栈 并且其窗口会添加到前一个活动的窗口上 有时稍后返回时 从后台堆栈获取的活动会在顶部活动下方显示其窗口 大多数时候这是完全有道理的 但我对这种行为有以下问题
  • 如何解决SBT依赖的依赖冲突?

    我有一个项目的构建 sbt正在使用 libraryDependencies Seq com lerestau killer launcher 1 0 2 com lerestau menu starter 1 0 0 菜单启动器过渡下载 杀
  • JavaFX检测同时按下的多个键盘按键

    正如标题所说 我想检测同时按下的多个键盘按键 同时地 并被按下 同时地 一段时间 我正在尝试添加多个事件处理程序Scene但它不起作用 EventHandler
  • MySQL如何获取不是我好友的用户

    有人可以帮助我吗 我需要吸引不是我朋友的用户 我有以下表格 users id user 1 Name1 2 name2 和桌子friends id id user id friends 1 2 3 2 5 4 我尝试类似的操作 但在某些查询
  • 全文索引和复合索引以及它们如何影响查询

    只是说我有一个查询如下 SELECT name category address city state FROM table WHERE MATCH name subcategory category tag1 AGAINST educat
  • 与断言相比,scala 中的假设有何含义?

    Scala 似乎定义了 3 种断言 assert require and assume 据我所知 差异 与通用断言相比 require它是专门用于检查输入 参数 传入消息等 的 是什么意思assume then 如果你看一下代码Predef
  • 关闭 WPF 中 Frame 内的页面

    我有一个窗口和一个框架 在该框架中 我打开了许多页面 我想通过单击 关闭 按钮关闭这些页面 问题是页面看不到我的框架我尝试在页面方法中的事件中编写关闭按钮 在主窗口中执行另一个事件 因为在主窗口上很容易看到框架 但它不起作用 这是我在页面中
  • Bootstrap 输入组插件未内联

    这是我的代码 http www bootply com iR1SvOyEGH http www bootply com iR1SvOyEGH
  • SwiftUI 中的圆角边框

    如何在 SwiftUI 中圆化边框 我认为这会起作用 cornerRadius 10 border Color white 但它不起作用 这是我现在的解决方法 overlay RoundedRectangle cornerRadius 10
  • 限制特定组的 Firebase 数据库和存储写入访问权限

    我有一个带有内容管理端的 React Redux Firebase 应用程序 所有这些页面都以 admin 我需要将 Firebase 数据库和 Firebase 存储写入权限限制为这些用户的一小部分 并在未经身份验证 或未经管理员角色身份