【问题标题】:Firebase 3.6.9 Error: PERMISSION_DENIED accessing database on Node SDKFirebase 3.6.9 错误:PERMISSION_DENIED 访问 Node SDK 上的数据库
【发布时间】:2017-02-24 17:07:42
【问题描述】:

我指的是https://firebase.google.com/docs/database/admin/start

我有如下提到的node.js 代码:

var admin = require("firebase-admin");
var serviceAccount = require('mySdkJSONFile');
admin.initializeApp({
    credential: admin.credential.cert({
                    projectId: "myProjectId",
                    clientEmail: "myClientEmail",
                    apiKey: "myApiKey",
                    privateKey: "myPrivateKey"
                }),
    databaseURL: "....",
    databaseAuthVariableOverride: {
        uid: "my-service-worker"
    }
});
var db = admin.database();
var usersDB = db.ref("/users");
usersDB.set({
  name: "myName",
  date: "yesterday"
});

并且在数据库中规则设置为

{
 "rules": {
 "public": {
     ".read": false,
     ".write": false
  },
 "users": {
    "$uid": {
      ".read": "auth.uid == 'my-service-worker'",
      ".write": "auth.uid == 'my-service-worker'"
            }
          }
      }
}

如果我将“/user”的读写权限设置为true,一切正常,没有配置问题。

【问题讨论】:

  • 请记住rules are not filters。如果您正在查询/users,那么您需要一个允许在该级别而不是在其下一级进行读取访问的规则。

标签: javascript firebase firebase-security


【解决方案1】:

您的my-service-worker 帐户可能存在问题。查看Firebase console 中的Authentication 选项卡,并检查该用户在User UID 列中的内容。确保您使用相同的名称。除此之外,一切都应该没问题。

一般来说,uid 是一个复杂的自动生成字符串。我不确定您将如何创建自定义字符串,例如您输入的字符串。

【讨论】:

  • 但是firebase.google.com/docs/database/admin/start中提到的sn-p代码呢
  • @manntsheth 请注意您引用的文档中所说的内容:“在此自定义身份验证对象中,将 uid 字段设置为您在安全规则中用于表示您的服务的标识符。”那么,您是否使用 uid 来引用您的实际服务帐户,而不仅仅是“my-service-worker”?
【解决方案2】:

需要更改用户规则,不需要“$uid”。正如我在问题中提到的同一个链接中提到的(我自己觉得很傻)https://firebase.google.com/docs/database/admin/start

{
 "rules": {
   "public": {
      ".read": false,
      ".write": false
   },
   "users": {
     ".read": "auth.uid === 'my-service-worker'",
     ".write": "auth.uid === 'my-service-worker'"
   }
 }
}

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 2018-02-07
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    相关资源
    最近更新 更多