Firebase 如何通过电子邮件和密码身份验证在规则中获取有关auth变量的更多信息

Firebase 如何通过电子邮件和密码身份验证在规则中获取有关auth变量的更多信息,firebase,firebase-security,Firebase,Firebase Security,根据,规则中的auth变量仅获取uid和提供程序属性,而客户端authData获取password.email。 如果我想根据电子邮件地址中的域名编写规则,该怎么办?我非常希望服务器端也有password.email 还是有别的办法 根据评论更新 请考虑以下代码:有人希望访问属于“Hotmail”的任何数据: 创建帐户fbase.createUser{email:'john@example.com,密码:'qwerty'}; 然后他登录并存储在Firebase'/users/'+authData

根据,规则中的auth变量仅获取uid和提供程序属性,而客户端authData获取password.email。 如果我想根据电子邮件地址中的域名编写规则,该怎么办?我非常希望服务器端也有password.email

还是有别的办法

根据评论更新

请考虑以下代码:有人希望访问属于“Hotmail”的任何数据:

创建帐户fbase.createUser{email:'john@example.com,密码:'qwerty'}; 然后他登录并存储在Firebase'/users/'+authData.uid+'/domain'value'hotmail.com'
即使他的电子邮件位于example.com域中,他也不能访问“hotmail.com”数据吗?

当然可以。将客户端中的任何值存储在Firebase中,并检查安全规则中的值是否正确。例如,write:root.child'users/'+auth.uid+'/domain.val=='hotmail.com'感谢您的回复Frank van Puffelen。请考虑下面的代码,这些代码是想访问属于“Hotmail”的任何数据的人编写的:1创建帐户FBASE.CREATEUSER {Email:john@example.com,密码:'qwerty'};然后他登录并存储在Firebase“/users/'+authData.uid+'/domain”value“hotmail.com”中,即使他的电子邮件位于example.com域中,也不允许他访问“hotmail.com”数据?这确实允许john访问hotmail.com电子邮件,这就是为什么你应该编写安全规则阻止他们这样做的原因。您可以运行设置域并且是唯一具有写访问权限的域的管理任务,也可以将域设置为一次写入设置,并在创建用户设置时立即设置。无论如何:您可以/应该使用验证规则来确保john留在example.com域中,但我对这些没有什么经验。事实上,正如我所想,由于电子邮件和密码验证不需要电子邮件确认,john可以轻松地注册为john@hotmail.com,即使我们有强制执行的规则,他也有权限,这是正确的。我感觉你在试图使用Firebase的用户识别机制来划分用户。您可以考虑另一种选择,例如管理员将每个用户与一个或多个域关联起来。甚至只是为每个域设置一个单独的Firebase,这使得他们完全无法看到彼此的数据,而无需为其编写安全规则。