当前位置: 首页 > 面试题库 >

Firebase权限被拒绝

丌官丰羽
2023-03-14
问题内容

我对编码比较陌生,遇到了麻烦。

我有这段代码可以将数据发送到Firebase

app.userid = app.user.uid

var userRef = app.dataInfo.child(app.users);

var useridRef = userRef.child(app.userid);

useridRef.set({
  locations: "",
  theme: "",
  colorScheme: "",
  food: ""
});

但是,我不断收到错误:

FIREBASE警告:设置为/ users /(GoogleID)失败:Permission_denied 2016-05-23
22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(…)

当我尝试查找时,它谈论的是Firebase的规则,该规则似乎是一种我还没有学过的语言(或者说是我的头上的话)。有人可以解释造成此问题的原因吗?我以为是我要它来存储电子邮件和用户显示名称,但您根本不被允许这样做,但是当我取出这些名称时,我仍然遇到同样的问题。是否可以在不设置规则的情况下避免这种错误,还是可以通过规则教我自己如何在一天之内完成写作,还是只是脱离了联盟?

谢谢你的帮助!


问题答案:

默认情况下,Firebase控制台中项目中的数据库仅可由管理用户读取/写入(例如,在CloudFunctions或使用Admin SDK的进程中)。常规客户端SDK的用户无法访问数据库,除非您更改服务器端安全规则。

您可以更改规则,以便只有经过身份验证的用户才能读取/写入数据库:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

但是由于您不是从代码中登录用户,因此数据库拒绝您访问数据。要解决此问题,您将需要允许未经授权的数据库访问,或者在访问数据库之前登录用户。

允许未经身份验证的数据库访问

目前(直到本教程更新)最简单的解决方法是进入项目控制台的“数据库”面板,选择“规则”选项卡,然后用以下规则替换内容:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

这使得您知道数据库URL的任何人都可以读取和写入新数据库。在投入生产之前,请确保再次保护数据库,否则可能会有人滥用数据库。

访问数据库之前登录用户

对于(稍微)更耗时但更安全的解决方案,请调用Firebase身份验证signIn...方法之一以确保用户在访问数据库之前已登录。最简单的方法是使用匿名身份验证

firebase.auth().signInAnonymously().catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

然后在检测到登录后附加您的听众

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    var isAnonymous = user.isAnonymous;
    var uid = user.uid;
    var userRef = app.dataInfo.child(app.users);

    var useridRef = userRef.child(app.userid);

    useridRef.set({
      locations: "",
      theme: "",
      colorScheme: "",
      food: ""
    });

  } else {
    // User is signed out.
    // ...
  }
  // ...
});


 类似资料:
  • 问题内容: 当我尝试运行简单的docker命令时,例如: 我收到一条错误消息: 获得权限被拒绝… /var/run/docker.sock:connect:权限被拒绝 当我检查权限 我看到这一行: 因此,我遵循许多论坛的建议并将本地用户添加到docker组: 但这无济于事。我仍然收到非常相同的错误消息。我该如何解决? 问题答案: 对于那些刚接触shell的人,命令: 需要在您的外壳中定义。默认情况

  • 问题内容: 尝试显示URI时出现以下异常。我认为这是在我的活动停止后发生的,我尝试再次访问可行的URI。还有其他问题可以解决这个问题,但是我对如何对我的代码应用任何解决方案感到非常困惑,因为我的takePhotoIntent允许拍照或从图库中选择图片(如下所示)。 我的createImageFile和我的takePhotoIntent: 问题答案: 根据Storage Access Framewo

  • 问题内容: 很抱歉来到这里问这个问题,但是我已经读完了所有互联网,试图找到解决方案,但是我仍然遇到这个问题… 我已经成功安装了Jenkins(让我在仍有希望的时候开始)可以在我们的持续集成流程中使用它。 我试图从这样一个简单的例子开始: 但是每次启动时,都会出现此错误: 问题在于用户jenkins(服务和主节点以Jenkins的身份运行)拥有此存储库上的所有权限。我试图授予组和其他人读取和执行的权

  • 问题内容: 我正在尝试将查询写入文件以进行调试。该文件位于中。我要写入的文件是。 我正在尝试使用 但是我越来越 file_put_contents(queries.txt)[function.file-put-contents]:无法打开流:权限被拒绝 我的文件chmod’d为777,可能是什么问题? 问题答案: 尝试调整目录权限。 在终端上运行(从包含数据库文件夹的目录中运行) apache,如

  • 大家好,我正在尝试阅读一个网站的内容与以下代码 但我得到以下错误,我不知道如何解决它。 如果你有什么想法,不要害羞。

  • 当我尝试运行简单的docker命令时,比如: 我收到一条错误消息: 所以,我听从了很多论坛的建议,将本地用户添加到docker组中: 但这无济于事。我仍然得到同样的错误消息。我该怎么修好它?