如何验证Firebase安全规则中的电子邮件地址

Rië*_*iël 3 javascript firebase firebase-security firebase-realtime-database

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

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

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

{ "data" : {
   "ms12345678" : { 
       "name" : "John Doe",
       "age"  : 40,
       "email" : "johndoe@domain.com"
    }
}
Run Code Online (Sandbox Code Playgroud)

var ref = firebase.database().ref("data/ms12345678")除非我提供,否则这样做应该会失败johndoe@domain.com.

我不知道我应该采取什么方法.我不希望用户进行身份验证,但为他们提供链接.

Fra*_*len 5

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

{
  "rules": {
    "data": {
      "$uid": {
        ".read": "auth.token.email === data.child('email').val()"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

有关可用属性的列表,请参阅文档auth.token.

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

{ "data" : {
   "ms12345678" : { 
      "johndoe@domain,com": {
         "name" : "John Doe",
         "age"  : 40,
         "email" : "johndoe@domain.com"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

有了这个,您可以限制对知道完整路径的人的读访问权限:

{
  "rules": {
    "data": {
      "$uid": {
        "$email: {
          ".read": "auth.uid === $uid"
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)