【问题标题】:firebase json db security rule using fb authentication使用 fb 身份验证的 firebase json db 安全规则
【发布时间】:2018-03-13 19:03:53
【问题描述】:

我正在为我的移动应用程序使用 ionic 3 angular,并且使用 fb 本机 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 等?

【问题讨论】:

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


    【解决方案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() promise 中检索。

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

    【讨论】:

    • 是的,主要目的是询问它是否得到照顾。我没有过多关注确切的规则定义
    猜你喜欢
    • 2019-01-20
    • 2019-10-17
    • 1970-01-01
    • 2019-06-15
    • 2020-06-23
    • 2019-08-08
    • 1970-01-01
    • 2016-03-06
    • 2021-07-23
    相关资源
    最近更新 更多