根据用户oauth电子邮件设置安全规则firebase

时间:2016-02-07 23:59:11

标签: firebase firebase-security

是否有办法安全地获取他们在安全规则中使用的电子邮件。

理想情况下,我想创建一个如下规则:

{
    ".read": "auth.google.email.matches(/@example.com$/)"
    ".write": "auth.google.email.matches(/@example.com$/)"
}

以便将整个应用程序或应用程序的一部分保护为电子邮件地址后缀。这是一种更容易管理我的应用程序的方法,因为用户将根据他们拥有的公司电子邮件获得访问权限,无论是全部还是全部。

另外一种方法是将用户电子邮件地址保存到数据库,然后他们无法写入,我相信我可以实现类似的过程。

1 个答案:

答案 0 :(得分:3)

认证。 OAuth提供程序的属性在安全规则中不可用。根据{{​​3}}:

  

在进行身份验证之前,预定义的auth变量为null。用户通过Firebase登录的身份验证方法进行身份验证后,将包含以下属性:

     

提供商使用的身份验证方法("密码","匿名","脸谱"," github&#34 ;," google"或" twitter")。

     

uid 唯一的用户ID,保证在所有提供商中都是唯一的。

因此,您无法根据电子邮件地址保护数据,除非您让服务器以安全的方式提供电子邮件域。

一旦涉及服务器,您可以:

  • 验证电子邮件地址并将经过验证的电子邮件地址存储在数据库中。然后,您可以使用root.child('users').child(auth.uid).child('emailDomain').val()
  • 之类的安全规则访问它
  • documentation on the auth variable包含电子邮件域,因此您可以在安全规则的auth变量中使用auth.emailDomain