Firebase Auth Inivite Only方案:如何将凭据传达给用户?

时间:2016-11-27 19:21:55

标签: web firebase firebase-authentication

这是我的问题。要访问我们的应用,用户必须受邀

这意味着,我们使用管理员网络应用在Firebase中创建用户帐户,我们向他发送邀请以下载应用并使用它。

现在是下一阶段,我们如何向新创建的用户发送他的凭据?

我们的第一个想法是使用临时密码。我们可以通过电子邮件将密码发送给用户,并要求他在第一次登录时重新定义密码。

他的这个好主意?我猜它不是

有更好的方法吗?

感谢您的帮助。 Ť

2 个答案:

答案 0 :(得分:1)

无法阻止用户使用Firebase身份验证进行身份验证。因此,您应该确保只有授权用户才能访问数据,而不是依赖于预先创建帐户。

例如,使用Firebase数据库时,您可以在数据库中保留授权用户列表:

/authorizedEmails
  t4ncr3d3@hisdomain,com: true
  puf@hisdomain,com: true

然后你会在database's security rules中针对此列表检查auth.email变量。

您可以直接通过电子邮件向用户发送邀请给应用,而不是预先创建帐户。例如。包含http://myapp.mydomain.com/signup.html?email=t4ncr3d3@hisdomain.com

等链接的电子邮件

然后,当他们点击该链接时,请使用您发送邮件的电子邮件地址预先填写注册表单并致电createUserWithEmailAndPassword()

答案 1 :(得分:0)

您可以使用新的(截至2016年11月)firebase-admin库(java或节点)以编程方式从服务器端创建用户 - see this link for details

之后,您可以通过电子邮件将电子邮件和密码发送给用户,并仅允许email based password logins。不幸的是,您不能强迫未经邀请的人停止使用您的应用进行身份验证,因为他们可以手动调用用于创建新帐户的API,就像您在同一页面上看到的那样。但是,您没有义务通过UI提供登录机制。他们必须使用他们的浏览器来键入和调用创建帐户所需的JS。

如果你可以强行创建帐户,但是你想锁定他们的访问权限,你可以做类似于Frank在另一个答案中提到的东西,使用数据库的管理控制来限制对你拥有的用户的访问权限创建并邀请数据库中的特殊标志(只有您可以使用管理SDK修改)作为应用程序的网关。如果您正确执行了安全措施,那么即使他们可以使用该应用程序进行有效身份验证,也应该阻止那些您没有邀请他们使用该应用程序。