firebase - 有没有办法限制firebase中的注册

标签 firebase firebase-security

有没有办法限制用户注册 Firebase 电子邮件/密码帐户,使新用户无法注册?我有一个只有少数管理员需要访问的小应用程序(我已在 Firebase 管理员中手动创建),现在它的设置方式似乎任何人都可以注入(inject)一点 javascript 并注册一个帐户。

最佳答案

Firebase 简单登录是建立在 Firebase Custom Login 之上的抽象。为了方便。使用电子邮件/密码身份验证时,值得记住的是,这只是在该电子邮件和密码之间创建映射,并自动生成身份验证 token 以用于您的安全规则。

在您的特定情况下,如果已经创建了所有“管理员”用户,您可以通过安全规则实现您正在寻找的行为。例如,如果您只想允许该列表中经过身份验证的用户对您的 Firebase 数据树进行读/写访问,请尝试编写要求该用户位于“管理员”列表中的顶级读/写安全规则:

{
  ".read"  : "auth != null && root.child('admins').hasChild(auth.uid)",
  ".write" : "auth != null && root.child('admins').hasChild(auth.uid)"
}

上面的这些规则确保用户经过身份验证(通过 auth != null )并要求经过身份验证的用户的 id 在管理员列表中( root.child('admins').hasChild(auth.uid) )。

最后一步是让这些用户成为管理员,将他们写入 admins子树。假设您有用户 1、4 和 7 作为管理员,更新您的数据树以反射(reflect)以下内容:
{
  ...
  "admins": {
    "1": true,
    "4": true,
    "7": true
  }
}

因此,即使其他用户能够使用 Firebase 简单登录生成新的电子邮件/密码映射,这些映射也不会影响您的应用程序,因为它使用安全规则进行限制。

关于firebase - 有没有办法限制firebase中的注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21815229/

相关文章:

firebase - 依赖文档引用的Firestore访问规则

javascript - Firestore : cannot securely query data with a WHERE clause that uses both currentUser. uid 和 FieldPath.documentId()

firebase - Firestore 安全规则 - 验证传入数据长度是否大于 2,但字段不是必需的

javascript - 函数返回未定义、预期的 Promise 或值异步方法

angularjs - 是否可以使用 Parse 在 AngularJS 应用程序中获得 3 路数据绑定(bind)?

javascript - 尝试对 firebase 数据库进行排序不起作用

android - FirebaseRemoteConfig.activateFetched() 已弃用。改用什么?

firebase - 我可以使用 Firebase Auth 保护我的云函数,但不使用可调用的云函数吗? (仅限 HTTP 请求)

android - 是否可以在 Web 和 Android 客户端中通过 Google 使用 Firebase 的内置身份验证?

firebase - 没有身份验证的 Firestore 安全规则