【问题标题】:Does Firebase create accounts for all authentication types?Firebase 是否为所有身份验证类型创建帐户?
【发布时间】:2014-05-14 09:35:27
【问题描述】:

电子邮件注册被视为我们伪造中简单登录电子邮件选项卡下的新记录。

但是当用户使用 Facebook 或 Google 等 OAuth2 登录之一登录时会发生什么?

立即将example 移出站点并对其应用多个上下文:

{
  "rules": {
    ".read": true,
    "comments": {
      "$comment": {
        ".write": "auth != null",
        ".validate": "auth.id == newData.child('userid').val() && newData.hasChildren(['userid', 'body']) && newData.child('body').isString()"
      }
    }
  }
}
  • 如果用户使用 Facebook 帐户登录,Firebase 是否会在与电子邮件/密码登录相同的上下文中创建新的 auth 记录和范围安全规则?

  • 如果是这样,这些注册是否可以以与我们的电子邮件身份验证类型相同的方式查看?您是否以相同的方式对这些记录执行(删除)等操作?

  • 规划一个主 userId 集合以使用户能够将多个帐户类型绑定在一起的最佳方法是什么? (Facebook、Google 和电子邮件都捆绑在一起)

【问题讨论】:

    标签: firebase firebase-security


    【解决方案1】:

    请记住,在该控制台(通常在 Firebase Simple Loign 电子邮件/密码身份验证中)“创建用户”只会在电子邮件地址和密码之间生成新的映射,并为该帐户提供唯一的自动-递增 id。

    Firebase 简单登录不会自动在您的 Firebase 中存储任何数据,但在登录时,它会自动生成一个新的 Firebase 身份验证。您可以使用auth 变量编写安全规则的令牌。

    使用任何其他提供程序的登录方法目前不存储数据,但将来可能会有更多功能。除了创建 Firebase 身份验证之外,使用 Facebook / Google / 等登录还将获取一堆有用的用户元数据并将其发送到客户端。用于安全规则的令牌。要查看所有提供程序中 auth 变量的内容,请参阅每个简单登录提供程序文档页面上的“验证后”部分,例如:Facebook。除了电子邮件/密码提供商之外,任何提供商都没有删除的概念。

    如果您希望拥有与多个社交凭据相关联的用户帐户,可以这样做,尽管目前它有点笨拙(和手动)。请参阅 How can I login with multiple social services with Firebase? 了解详细的演练。

    【讨论】:

    • 因此,如果为 Facebook 登录生成了身份验证令牌 - auth.id 在再次登录后将是相同的......这将允许您混合登录类型(不同的用户)范围是相同的收集规则吗?
    • @DanKanze 正确!另请注意,身份验证令牌上有一个uid 参数,类似于“:”,它允许您将所有用户帐户存储在一个列表中,而不必担心提供者之间发生冲突。
    • 任意两个uid 都一样吗?例如,我可以将uid 设为users 集合中的键名吗?
    • uid 对于两个不同的用户永远不会相同。这个uid 属性专门用于您描述的用例,并且可以安全使用。 =)
    • 我对您在此处链接到的那个策略有一些疑问:stackoverflow.com/questions/22886053/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2017-11-08
    • 2020-01-05
    相关资源
    最近更新 更多