Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于用户oauth电子邮件设置安全规则firebase_Firebase_Firebase Security - Fatal编程技术网

基于用户oauth电子邮件设置安全规则firebase

基于用户oauth电子邮件设置安全规则firebase,firebase,firebase-security,Firebase,Firebase Security,是否有一种方法可以安全地获取他们在安全规则中使用的电子邮件 理想情况下,我想创建一个规则,如: { ".read": "auth.google.email.matches(/@example.com$/)" ".write": "auth.google.email.matches(/@example.com$/)" } 因此,整个应用程序或应用程序的一部分都被安全地设置为电子邮件地址后缀。这是一种更容易管理我的应用程序的方法,因为用户将根据他们所拥有的公司电子邮件获得访问权,无

是否有一种方法可以安全地获取他们在安全规则中使用的电子邮件

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

{
    ".read": "auth.google.email.matches(/@example.com$/)"
    ".write": "auth.google.email.matches(/@example.com$/)"
}
因此,整个应用程序或应用程序的一部分都被安全地设置为电子邮件地址后缀。这是一种更容易管理我的应用程序的方法,因为用户将根据他们所拥有的公司电子邮件获得访问权,无论是全部还是全部


或者,有一种方法可以将用户的电子邮件地址保存到数据库中,这样他们就无法写信了。我相信我可以实现类似的过程

auth。OAuth提供程序的属性在安全规则中不可用。根据:

在进行身份验证之前,预定义的
auth
变量为空。一旦用户通过Firebase Login的auth方法进行身份验证,它将包含以下属性:

提供者使用的身份验证方法(“密码”、“匿名”、“facebook”、“github”、“google”或“twitter”)

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

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

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

  • 验证电子邮件地址并将验证后的电子邮件地址存储在数据库中。然后,您可以在安全规则中使用类似于
    root.child('users').child(auth.uid).child('emailDomain').val()的内容来访问它。
  • 这包括电子邮件域,因此它在安全规则中的
    auth
    变量中可用,类似于
    auth.emailDomain