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

kjo*_*876 5 firebase firebase-security

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

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

{
    ".read": "auth.google.email.matches(/@example.com$/)"
    ".write": "auth.google.email.matches(/@example.com$/)"
}
Run Code Online (Sandbox Code Playgroud)

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

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

Fra*_*len 3

授权。OAuth 提供程序的属性在安全规则中不可用。根据auth 变量的文档

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

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

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

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

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

  • 验证电子邮件地址并将验证的电子邮件地址存储在数据库中。然后您可以在安全规则中使用类似的内容访问它root.child('users').child(auth.uid).child('emailDomain').val()
  • 创建您自己的包含电子邮件域的令牌,以便它可以在auth安全规则的变量中使用,例如auth.emailDomain.