【问题标题】:Firebase Rules with facebook Authentication and Unique IDs具有 facebook 身份验证和唯一 ID 的 Firebase 规则
【发布时间】:2018-04-27 16:06:43
【问题描述】:

我正在寻找一些建议或可能的解决方案来加强我的 Firebase 规则。

这是我在 Firebase 中的用户树:

users
    |_male
         |_uid

    |_female
         |_uid

UID 将是创建帐户时的纪元时间戳,它将是一个有符号整数。

这些是 firebase 规则,基本上可以确保用户在读取或写入用户之前已登录并通过 Facebook 进行身份验证:

"users": {
       "male":{
          ".indexOn": ["uid"]
       },
       "female":{
         ".indexOn": ["uid"]
       },
       ".read": "auth != null  && auth.provider === 'facebook'",
       ".write": "auth != null && auth.provider === 'facebook'"
},

我只希望用户读/写他们的树,例如:

users->male->uid->1233254...

我担心我上面的规则可能会读取/写入另一个用户树。

如果我可以将应用 UID 与 Facebook UID 进行比较,那就太好了。 我确实在数据库的另一棵树中捕获了这个细节,例如:

user_fbuid
         |_fbuid
               |_facebook:a1244dxs
                                 |_uid

我在这里确实有更好的规则来检查auth.uid

"user_fbuid": {
      "fbuid":{
        "$fbuid": {
          ".indexOn": ["fbuid"],
          ".read": "$fbuid === auth.uid && auth.provider === 'facebook'",
          ".write": "$fbuid === auth.uid && auth.provider === 'facebook'"
       }
   },
},

如果有人有任何想法,我很乐意听到。谢谢

【问题讨论】:

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


    【解决方案1】:

    我最终使用 facebook id 属性作为我自己的 uid 和以下规则:

    "$uid": {
              // only the user can read and write to their tree
              ".read": "auth != null  && auth.provider === 'facebook' && auth.token.firebase.identities['facebook.com'][0] === $uid",
                ".write": "auth != null  && auth.provider === 'facebook' && auth.token.firebase.identities['facebook.com'][0] === $uid"
            },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-20
      • 2020-05-10
      • 2016-06-08
      • 1970-01-01
      • 2019-03-06
      • 2018-05-24
      • 1970-01-01
      • 2020-09-24
      相关资源
      最近更新 更多