在实时数据库规则中是可能的 验证身份验证中是否存在电子邮件?
因为我登录 在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"
}
}
答案 0 :(得分:0)
安全规则无法检查某个电子邮件地址是否存在。他们所能做的就是读取令牌中的声明并对其执行操作。但是通常令牌中会有一个"email_verified"
声明,您可以用来确保电子邮件地址已通过验证:
"someNode": {
".write": "auth.token.email_verified === true"
}
提供者(例如Google和Facebook提供者)可以进行验证,也可以通过Admin SDK通过您自己的代码进行验证。