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

禁止用户修改Firebase中的数据,但允许应用程序更新此数据

姚树
2023-03-14

我用GatsbyJS(React)+Firebase创建了一个应用程序

用户有一个分数保存在Firebase实时数据库与他们的数据。

{
  users: {
    $uid: {
      score: 10,
      name: "Antho",
      ...
    }
  }
}

我不希望用户能够自己更改他们的分数,所以我像这样拆分我的数据库:

{
  users: {
    $uid: {
      name: "uciska",
      ...
    }
  },
  scores: {
    $uid: {
      score: 10
    }
  }
}

共有1个答案

徐阳炎
2023-03-14

如果您不希望您的用户能够编写分数,您可以简单地使用以下规则:

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "auth.uid == $uid"
      }
    }
    "scores": {
      ".write": false // this is not strictly needed, since the default is false
    }
  }
}

这样,每个用户都可以在/users/$uid下编写自己的节点,没有用户可以编写任何分数。

接下来,您需要在受信任的环境中使用Firebase Admin SDK来编写分数。受信任的环境是您控制访问的东西,例如服务器、开发机器或云功能。在云函数中运行或以其他方式使用Admin SDK的代码具有管理权限,这意味着它绕过了安全规则。以便代码可以读/写整个数据库,包括分数。

 类似资料:
  • 我正在用firebase创建一个Ionic 2应用程序,我需要一种方法来监听数据库更改(特别是在child_added上),当应用程序关闭(即在前台、后台和被杀)时 基本上,我想使用WebRTC在whatsapp这样的应用程序内进行呼叫,我正在关注这篇文章https://websitebeaver.com/insanely-simple-webRTC-video-chat-using-fireba

  • 我正在使用FireBase实时数据库来设置一个简单的CRUD应用程序。 我正在设置规则,以便只有登录的用户才能写入请求部分。我一定是误会了奥特。uid。 在请求中,我设置了,但我无法写入数据。 我错过了什么?

  • 我有一个简单的JavaFX应用程序,它允许用户查询数据库并查看表中的数据。 我使用的是标准的javafx.Scene.Control.TableView类。是否有一种简单的方法来启用单元格复制?我做了一些搜索,我看到其他人创建自定义菜单命令...我不想创建一个自定义菜单,我只想要基本的键盘复制与单细胞工作。 我使用的是单一选择模式,但如果需要,我可以更改为其他模式:

  • 问题内容: 我正在处理Android项目,但遇到了我无法理解的错误: 此处不允许使用数组初始化程序 我试图简化我的代码,这归结为 这里发生了什么? 问题答案: 你应该用 您只能在变量初始化时使用缩写语法。

  • 本文向大家介绍Linux中禁止用户修改/重置密码,包括了Linux中禁止用户修改/重置密码的使用技巧和注意事项,需要的朋友参考一下 前言 Linux用户的用户名保存在/etc/passwd文件中,密码保存在/etc/shadow中。要禁止用户修改/重置密码,将这两个文件设置为只读即可。 方法如下 要允许修改密码,取消文件上的只读标记: 注意 将这两个文件设置为只读后,附加效果是无法新建新用户。例如

  • 我对Android dev和Firebase很陌生。 我需要以下帮助: 提前谢谢你。 公共类AddUsername扩展片段实现View.OnClickListener,TextWatcher{