针对多个用户的Firebase实时数据库身份验证

时间:2018-02-05 18:00:04

标签: firebase firebase-realtime-database firebase-authentication

我在为Firebase实时数据库中的多个用户寻找简单的身份验证机制。例如:我不希望所有数百万用户使用电子邮件和密码登录以实时访问Firebase。

我遇到了从以下文档创建自定义令牌。

https://firebase.google.com/docs/auth/admin/create-custom-tokens

我想清楚地了解这一点。这是否有助于通过自定义令牌以编程方式验证多个用户(分组为一个)而不是每个用户必须使用电子邮件地址和密码进行身份验证?或者这与我的想法有什么不同?

请指教。

3 个答案:

答案 0 :(得分:0)

不,当您拥有自己的用户数据库时,会使用自定义令牌,这些用户数据库已使用您提供的其他形式的凭据登录到现有服务。

如果您没有自己的用户数据库,自定义令牌将无济于事。

此外,为了使用Firebase身份验证进行身份验证,不存在“分组”用户的问题。每个用户都有自己独特的身份和自己的凭据,这些凭据是彼此独立处理的。

答案 1 :(得分:0)

用户登录(身份验证)与访问数据库(授权)之间存在差异。

无法阻止用户使用您在Firebase控制台中启用的Firebase身份验证的内置提供程序进行身份验证。但是,只允许特定用户使用Firebase的服务器端安全规则访问数据库中的数据非常容易。

例如,如果您只想要特定用户访问权限,则可以设置其UID的白名单:

No active profile set, falling back to default profiles: default

现在,您可以编写一个简单的安全规则,该规则仅允许此列表中的用户读取您的数据库:

allowedUsers
  uid1: true,
  uid2: true,
  uid3: true

答案 2 :(得分:0)

如果您拥有自己的身份验证服务但希望允许用户访问Firebase服务,则会使用自定义令牌。如果您希望用户能够在没有电子邮件和密码的情况下使用数据库,则可以use a provider(如Google)或使用Anonymous authentication,即用户登录并可以访问数据库时,但不必证明他们自己。您可以随时将它们添加为实际用户。

要允许经过身份验证的用户访问数据库,您可以使用以下规则:

// These rules require authentication
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Database Rules Docs