如何调试Firebase身份验证规则?

时间:2017-05-19 19:44:25

标签: swift firebase firebase-realtime-database firebase-authentication firebase-security

在Firebase中,我实施了一条规则,限制对当前登录用户的节点的访问。节点如下所示:

{
    "app": {
        "my_team": {
            "a_really_long_uid_string": {
                "Lionel_Messi" = true,
                "Christiano_Ronaldo" = true
             }
        }
    }
}

我已经创建了以下规则(基于在线Firebase文档),这意味着登录用户只能看到自己的数据(即没有其他用户的数据)。

{
    "rules": {
        "my_team": {
            "$uid": {
                ".read": "auth != null && auth.uid == $uid",
                ".write": "auth != null && auth.uid == $uid"
            }
        }
    }
}

我的客户端环境是在Swift中,我已经做了一个简单的测试程序,

func testAuthentication() {
    print("test: \(uid)")
    FirebaseRef.child("my_team").observe(.value, with: { (snapshot) in
        let snapshot = snapshot.value as! [String: AnyObject]
        print("test2: \(snapshot)")
    }) { (error) in
        print(error.localizedDescription)
    }
}

当我运行代码时,我在控制台中获得第一个打印("测试:a_really_long_uid_string")但是没有得到第二个打印语句。

如果我更改规则以限制对任何已登录用户的访问,我会在XCode控制台中获取两个打印语句。

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

有谁知道该怎么做或我如何解决这个问题?我想知道服务器上的auth.uid或$ uid是否为零,这可能是访问被拒绝的原因。

0 个答案:

没有答案