是否有办法安全地获取他们在安全规则中使用的电子邮件。
理想情况下,我想创建一个如下规则:
{
".read": "auth.google.email.matches(/@example.com$/)"
".write": "auth.google.email.matches(/@example.com$/)"
}
以便将整个应用程序或应用程序的一部分保护为电子邮件地址后缀。这是一种更容易管理我的应用程序的方法,因为用户将根据他们拥有的公司电子邮件获得访问权限,无论是全部还是全部。
另外一种方法是将用户电子邮件地址保存到数据库,然后他们无法写入,我相信我可以实现类似的过程。
答案 0 :(得分:3)
认证。 OAuth提供程序的属性在安全规则中不可用。根据{{3}}:
在进行身份验证之前,预定义的
auth
变量为null。用户通过Firebase登录的身份验证方法进行身份验证后,将包含以下属性:提供商使用的身份验证方法("密码","匿名","脸谱"," github&#34 ;," google"或" twitter")。
uid 唯一的用户ID,保证在所有提供商中都是唯一的。
因此,您无法根据电子邮件地址保护数据,除非您让服务器以安全的方式提供电子邮件域。
一旦涉及服务器,您可以:
root.child('users').child(auth.uid).child('emailDomain').val()
auth
变量中使用auth.emailDomain
。