所以我在
swift中构建这个应用程序,其中包含应该在用户登录之前读取的数据.
为了防止它从我的应用程序中读取,我提出了基本的安全规则:
".read": "auth != null"
为了防止在登录前读取,我在调用时设置了一个加载视图控制器:
func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
let ref = Firebase(url: "<my firebase url>")
ref.observeAuthEventWithBlock({ authData in
if authData != nil {
segueToListViewController()
}
})
return true
}
但是当我达到这一点时,有时firebase会给我“拒绝许可”的错误,有时却没有.
我确定有一个已登录的用户,因为我正在记录所有内容:
>登录已更改
>用户登录AuthData facebook:
> applicationDidBecomeActive
>加载ListViewController
>加载数据
>错误:错误域= com.firebase代码= 1“权限被拒绝”
那么,为什么Firebase有时会在用户登录时拒绝阅读?
最佳答案 我参加这个派对的时间已经很晚了,但是如果你把.read规则放在一个更高的级别,直接在孩子的名字下面,这可能会有所帮助.
例如
{
"rules": {
"users": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
}
},
"child": {
".read": "auth != null",
".write": "auth != null",
"$child": {
}
}
}
}