使用fb身份验证的firebase json db安全规则

时间:2018-03-13 19:03:53

标签: javascript firebase firebase-realtime-database firebase-authentication ionic3

我在我的移动应用程序中使用离子3角度,并使用fb native cordova插件登录。

firebase db安全文档使用类似

的语法
{  
   "rules":{  
      "users":{  
         "$user_id":{  
            ".write":"$user_id === auth.id"
         }
      }
   }
}

fb身份验证在我的应用程序中如下所示

 doLogin(){
    if (this.platform.is('cordova')) {
      return this.fb.login(['email', 'public_profile']).then(res => {
        const facebookCredential = firebase.auth.FacebookAuthProvider.credential(res.authResponse.accessToken);
         firebase.auth().signInWithCredential(facebookCredential);
         this.navCtrl.setRoot(TabsPage); 
      })
    }
}

我的问题是auth firebase变量是用上面的代码处理的,或者我需要额外的auth来获取所需的uid等?

1 个答案:

答案 0 :(得分:1)

auth firebase变量理论上是令牌代理:假设您已经启用了 Facebook登录方法。但是,您显示的数据库规则不一定相关。

这些规则(与上述相同):

"rules": {
    "users":{
        "$variable":{ ".write": "$variable=== auth.uid" }

指示用户只能使用相同的uid写入子节点。我将$user_id更改为$variable以突出显示$仅表示代表子节点名称的变量。 (我应该提到它应该是auth.uid而不是auth.id

这用于保存用户特定数据。因此,当他们注册时,您可以拥有一个说

的功能
firebase.database().ref('users').child(firebase.auth().currentUser.uid).update(<your custom data here>);

*请注意用户的孩子是如何“firebase.auth()。currentUser.uid”,可以选择从firebase.auth().signInWithCredential()承诺中检索。

很抱歉,如果解释更多是必要的话。简而言之。登录后uid始终与firebase.auth().currentUser.uid一起出现,而且uid是数据库规则在auth.uid中引用的内容,最后,auth / uid / etc几乎100%用firebase处理。