【问题标题】:Firebase Auth Built-in identityFirebase Auth 内置身份
【发布时间】:2019-11-02 19:29:08
【问题描述】:

我正在构建一个网络平台,以使用 Firebase Auth 和 Firestore 将学习者与导师联系起来。我将学习者的用户信息存储在 Firestore 集合中,将导师的信息存储在另一个集合中。我正在构建一个功能,可以在登录时检测客户是学习者还是导师。

我正在考虑的一个解决方案是使用 UID 查询在哪个集合中找到了用户。虽然,这是一个潜在的解决方案。但听起来它需要大量的事务,并且如果集合变得很大,可能需要很长时间。我还能做些什么吗?我想知道是否可以使用身份验证为每个用户构建嵌入式身份以区分“导师”和“学习者”?那么用户每次登录,我们马上就知道身份了?

我知道在解码的认证令牌中,有这样的信息:

{ iss: 'https://securetoken.google.com/xxxx',
aud: 'xxxx',
auth_time: 1569886929,
user_id: 'aB03',
sub: 'aB03',
iat: 1570582588,
exp: 1570586188,
email: 'aa@gmail.com',
email_verified: false,
firebase:
{ identities: { email: [Array] }, sign_in_provider: 'password' },
uid: 'aa3' }

我可以利用其中之一来构建我想要的东西吗?

非常感谢您的时间和帮助。

【问题讨论】:

    标签: javascript firebase firebase-authentication


    【解决方案1】:

    由于您提到“收藏”,我假设您正在寻找使用 Firestore。在这种情况下:集合的大小对查询性能没有影响。无论集合中有 1000 个用户文档、100 万个甚至 10 亿个用户文档,查询单个用户文档所需的时间始终相同。


    除此之外,您还可以将用户的类型存储在 ID 令牌中(这就是您在问题中显示的内容)。这称为“自定义声明”,因为您正在将应用的自定义属性添加到信息中。您需要在受信任的环境(您的开发机器、您控制的服务器或云功能)中执行此操作,因为我假设用户不应该能够更改自己的角色。有关这方面的更多信息,请参阅controlling access with custom claims 上的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-22
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 2018-06-04
      • 2022-10-13
      • 2018-01-25
      相关资源
      最近更新 更多