Firebase Cofiguration Open - Web App

时间:2017-07-19 05:17:57

标签: javascript firebase firebase-authentication firebase-security

我正在为web应用程序使用firebase,包含Api密钥和其他凭据的配置已打开。我已经编写了防止编写数据库的规则,但我无法阻止他们注册,我已将某些域列入白名单,但除了这些域之外,还可以在创建用户时访问。我正在使用cordova将此Web应用程序转换为Android应用程序和ioS应用程序。有没有办法阻止用户注册。

2 个答案:

答案 0 :(得分:1)

那么,你想让一些用户注册,而不是其他用户注册?我还假设你想使用谷歌的内置注册系统。

第一种方法

实现这一目标的最快但可能最难的方法是使用firebase功能提前将一组用户列入白名单。 Firebase功能可以捕获注册请求,如果它与您列入白名单的地址不匹配,则会忽略它。

当然,您可以使用它来执行各种其他功能,就像发送一个允许在短时间内注册的请求一样。通过javascript可以做任何事情。

否则,您将无法创建自己的登录方式。

我认为这是防止他们注册的唯一方法。

第二种方法

如果您想允许注册但不允许访问数据库,您应该能够将规则设置为" auth =(uid)"只允许那些uid写。

同样,使用firebase函数可以实现相同的过程,允许基于你的uid集编写等等。

另一种方法是firebase远程配置条件并实现类似的效果。 (我不建议这样做,因为它可能会创建一个不安全的客户端身份验证,或者检查auth的不必要的步骤。)

我使用的类似的东西是允许完全访问数据库,但使用firebase函数来防止删除。此方法允许用户具有完全访问权限,但我可以随时轻松更改其编写,移动或删除节点的能力。基本上,如果事实证明firebase函数方法最适合您的情况,我可以更新我的响应以包含我的代码中的样本。

第三种方法

firebase的某些用户使用数据库来存储用户及其凭据及其配置文件数据。因此,当用户注册时,它会向数据库添加一个节点,通过简单移动,删除或创建指示其权限的密钥,可以轻松接受或拒绝该节点。

祝你好运。它的功能通常有点隐藏,很难找到。在youtube上观看完整的Google I / O演示文稿可能会很有用,它可以详细解释其广泛的全部功能。它可以找到here。我强烈建议这一点,因为它帮助我更好地理解了这些功能和(说实话)我应该使用firebase的所有方法(但不是)。

答案 1 :(得分:1)

如果您需要绝对控制用户注册,我认为您应该使用custom authentication。这样,用户就不会直接注册您的Firebase实例,但您将为注册提供单独的服务器API登录过程。

当用户登录时(通过您的服务器API也是如此),您可以向他/她发送custom authentication token,他们可以使用这些来验证和访问Firebase上的数据。您可以阅读有关自定义身份验证的更多信息here

您可以拥有一个运行注册逻辑的小型NodeJS服务器。在那里你可以禁止不受欢迎的电子邮件。

Here提供了有关从服务器创建自定义身份验证令牌的文档。