代码之家  ›  专栏  ›  技术社区  ›  Hadi Sharghi

Firebase auth在一个项目中具有多个应用程序

  •  3
  • Hadi Sharghi  · 技术社区  · 7 年前

    我有一个firebase项目,其中有两个应用程序。客户端应用程序和服务提供商应用程序。两者都使用firebase电话认证。 每个用户都可以注册为具有相同电话号码的客户或服务提供商。 在服务器端,我可以从已发送的令牌(每个应用程序的令牌不同)中获取用户id(两个应用程序的用户id相同)。我不知道如何检索令牌是属于哪个应用程序中的用户的? 例如,当应用程序向服务器发送请求以获取登录用户的配置文件信息时,它会向服务器发送令牌。现在,我如何确定是否应该返回客户端应用程序或服务提供商应用程序的用户配置文件信息。这是两种非常不同的剖面模型。

    1 回复  |  直到 7 年前
        1
  •  3
  •   bojeil    7 年前

    您可以使用自定义用户声明将用户与客户端应用程序或服务提供商应用程序区分开来: https://firebase.google.com/docs/auth/admin/custom-claims

    您可以使用Firebase Admin SDK设置自定义声明:

    admin.auth().setCustomUserClaims(uid, {role: 'client'|'provider'})
    

    您将在规则中强制访问。例如:

    {
      "rules": {
        "providerContent": {
          ".read": "auth.token.role === 'provider'",
          ".write": "auth.token.role === 'provider'",
        },
        "clientContent": {
          ".read": "auth.token.role === 'client'",
          ".write": "auth.token.role === 'client'",
        }
      }
    }
    

    您可以按以下方式宣传您的主张: https://firebase.google.com/docs/auth/admin/custom-claims#propagate_custom_claims_to_the_client

    您需要在客户端强制刷新令牌。