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

拒绝Firebase许可

苏昊英
2023-03-14

我对编码相对较新,遇到了麻烦。

我有这个代码把数据发送到火警基地

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的规则,这似乎是一种我还没有学过的语言(或者它只是在我的脑海中浮现)。有人能解释一下是什么引起了这个问题吗?我以为这是我要求它存储电子邮件和用户显示名称,你只是不允许这样做,但当我把这些拿出来时,我仍然有同样的问题。有没有一种方法可以避免这个错误而不设置规则,或者规则是我可以自学如何在一天内写出来的,或者我只是远远超出了我的能力范围?

谢谢你的帮助!

共有1个答案

骆照
2023-03-14

您可以更改规则,使数据库仅可由经过身份验证的用户读取/写入:

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

但是,由于您没有从代码中登录用户,因此数据库拒绝您访问数据。若要解决此问题,您需要允许未经身份验证的数据库访问,或者在访问数据库之前登录用户。

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

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

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

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.
    // ...
  }
  // ...
});
 类似资料:
  • 我在我的Android应用程序中遇到了一个奇怪的权限拒绝,下面是我的清单文件: 我得到的错误是:ActivityManager:java.lang.SecurityException:权限拒绝:从null(PID=17572,UID=2000)启动意图{act=Android.Intent.Action.Main cat=[Android.Intent.Category.Launcher]flg=

  • 我正试图从命令行运行gradlew,但经常遇到以下错误。 我已经在我的项目目录中运行此命令。我需要运行这个命令,因为我在Android Studio 0.2.x上遇到了与这里相同的(非描述性)错误:Android Studio和gradle build错误 我是不是做错了什么?我该怎么解决这个问题?

  • Meteor 的安全系统不需要我们在每次修改数据的时候,在各自的函数里面进行手动检查。 例如,对于一个博客系统,我们常常需要做很多操作,往新帖子上添加属性,当发布帖子的时候进行特定检查。这些操作都是围绕帖子(post)这个对象进行的,所以我们应该为帖子设置一个专门的函数进行安全检查。 但在另一方面,我们又不希望为修改帖子或删除帖子这些简单的操作编写特定的函数。我们只需要在这些操作之前,检查用户是否

  • 我无法得到这是由什么原因造成的,因为我在文件中赋予了必要的权限。

  • 问题内容: 我对编码比较陌生,遇到了麻烦。 我有这段代码可以将数据发送到Firebase 但是,我不断收到错误: FIREBASE警告:设置为/ users /(GoogleID)失败:Permission_denied 2016-05-23 22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(…) 当我尝试查找时,它谈论的是

  • 我有一个问题。我有操作系统CentOS 5.8。我已经在httpd.conf文件中编写了这个配置: 听 85 在文件末尾: selinux是许可的。 以下是apache使用的目录和文件: 当我打电话的时候 '服务器ip':85/wsgi 从浏览器,有我的服务器的ip而不是'服务器ip ',我得到消息:(403)禁止:你没有权限访问/wsgi在这个服务器上。 和/var/log/httpd/erro