带有Firebase身份验证的auth.token.email实时数据库

时间:2019-09-04 13:10:27

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

在实时数据库规则中是可能的 验证身份验证中是否存在电子邮件?

因为我登录 在https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY] 并获取idToken登录到实时数据库, 但我想知道是否有一种方法可以验证 如果auth.token.email =身份验证电子邮件和启用的电子邮件 这是idToken base64解码的结果:

我需要知道身份验证用户中是否存在“ email”:“ xx@xx.com”

{
 "iss": "https://securetoken.google.com/xaxaxaxa",
 "aud": "xaxaxaxa",
 "auth_time": 1567541399,
 "user_id": "xxxxaxxaxaxaxaxaxax",
 "sub": "xaxaxaxaxaxaxaxa",
 "iat": 1567541399,
 "exp": 1567544999,
 "email": "xx@xx.com",
 "email_verified": false,
 "firebase": {
  "identities": {
   "email": ["xx@xx.com"]
  },
  "sign_in_provider": "password"
 }
}

1 个答案:

答案 0 :(得分:0)

安全规则无法检查某个电子邮件地址是否存在。他们所能做的就是读取令牌中的声明并对其执行操作。但是通常令牌中会有一个"email_verified"声明,您可以用来确保电子邮件地址已通过验证:

"someNode": {
  ".write": "auth.token.email_verified === true"
}

提供者(例如Google和Facebook提供者)可以进行验证,也可以通过Admin SDK通过您自己的代码进行验证。