【问题标题】:How to validate the email address in Firebase ssecurity rules如何在 Firebase 安全规则中验证电子邮件地址
【发布时间】:2017-01-17 05:15:48
【问题描述】:

我一直在参考 ID 下保存用户数据,以及一些包含电子邮件地址的用户信息。我想让数据可用,但要防止人们猜测 ID 并查看其背后是否有信息。

如果他们向我提供他们注册的 ID 和电子邮件地址,我只想提供数据。

所以我将这些数据存储在 Firebase 中:

{ "data" : {
   "ms12345678" : { 
       "name" : "John Doe",
       "age"  : 40,
       "email" : "johndoe@domain.com"
    }
}

所以var ref = firebase.database().ref("data/ms12345678") 应该会失败,除非我也提供johndoe@domain.com

我不确定我应该在这里采取什么方法。我不希望用户进行身份验证,而是向他们提供链接。

【问题讨论】:

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


    【解决方案1】:

    您可以验证帐户电子邮件地址是否与该值匹配:

    {
      "rules": {
        "data": {
          "$uid": {
            ".read": "auth.token.email === data.child('email').val()"
          }
        }
      }
    }
    

    请参阅documentation on auth.token 以获取可用属性的列表。

    或者,您可以要求用户知道电子邮件地址。为此,请将电子邮件地址嵌入到用户的路径中:

    { "data" : {
       "ms12345678" : { 
          "johndoe@domain,com": {
             "name" : "John Doe",
             "age"  : 40,
             "email" : "johndoe@domain.com"
          }
       }
    }
    

    这样,您可以将读取权限限制为知道完整路径的人:

    {
      "rules": {
        "data": {
          "$uid": {
            "$email: {
              ".read": "auth.uid === $uid"
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-26
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多