【问题标题】:Firebase Security Permissions telling that a string is not a string while using isStringFirebase 安全权限在使用 isString 时告诉字符串不是字符串
【发布时间】:2017-11-20 12:21:17
【问题描述】:

所以我将我的令牌发送到服务器,但出现了问题。我去测试我在 Firebase 模拟器上的权限,发现.validate 行告诉我这是错误的。这是我的安全规则

{
    "rules":{
        "tokens":{
        "users":{
                "$uid":{
                  ".read":"auth !== null && auth.uid === $uid",
                  ".validate":"newData.isString()", // wrong here. idk why
                  ".write":"auth !== null && $uid === auth.uid && (!data.exists() || newData.val() !== data.val())"
                }
            }
        }
    }
}

数据结构:

root
  |-  tokens
       |- users
           |- uid:token_value

我的输入如下:

模拟类型:写入

位置: /tokens/users/hA4hZrBieISwMOZaMYe7m6K5tpI3

数据(JSON):

{
  "hA4hZrBieISwMOZaMYe7m6K5tpI3": "hi"
}

已验证:正确

提供者:谷歌

UID: hA4hZrBieISwMOZaMYe7m6K5tpI3

问题是数据 (JSON) 中的 "hi" 被称为非字符串值。任何想法为什么?

【问题讨论】:

    标签: json firebase-realtime-database firebase-security


    【解决方案1】:

    您要写入 /tokens/users/hA4hZrBieISwMOZaMYe7m6K5tpI3 的新数据不是字符串,而是 JSON 对象:

    {
      "hA4hZrBieISwMOZaMYe7m6K5tpI3": "hi"
    }
    

    验证hA4hZrBieISwMOZaMYe7m6K5tpI3 是一个字符串值:

    {
        "rules":{
            "tokens":{
                "users":{
                   "$uid":{
                      ".read":"auth !== null && auth.uid === $uid",
                      "$key": {
                         ".validate":"newData.isString()"
                      },
                      ".write":"auth !== null && $uid === auth.uid && (!data.exists() || newData.val() !== data.val())"
                    }
                }
            }
        }
    }
    

    【讨论】:

    • 您好,感谢您的回答。看来我有点糊涂了。数据结构会遵循我在问题中提供的结构吗?或者它会在第一个 uid 下创建另一个节点,并将 uid 和令牌结合起来?因为我希望它看起来像 users/uid 并且 uid 将包含令牌。我在想的是将我设置的位置修改为tokens/users/ 以实现我想要的,但之后我迷路了
    • 我猜你想写一个简单的字符串("hi")到/tokens/users/hA4hZrBieISwMOZaMYe7m6K5tpI3。在这种情况下,您的原始规则是正确的,但问题是您正在尝试编写 JSON 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2013-08-29
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多