【问题标题】:Firebase authentication with role checking带有角色检查的 Firebase 身份验证
【发布时间】:2020-04-09 00:34:32
【问题描述】:

所以我对 firebase 和整个 noSql 数据库区域非常陌生。我现在正在从事一些基于 Flutter 的项目,该项目使用 firebase 作为后端和数据库。

所以我正在构建类似 uber 的东西,但是为了发送东西,我正在创建 4 个不同的用户角色

  1. 买家
  2. 卖家
  3. 驱动程序
  4. 收货人(买家也可以充当收货人,但是,对于具有收货人角色的用户,他们只能接收不订购的东西)

在我的应用程序中,当用户登录或注册时,他们将首先选择他们将登录或注册为什么角色。现在在 laravel 或 php 中,通常我可以轻松地在数据库上构建一个检查器或某个字段来指示用户角色,并且每当用户登录或注册时,它不仅会检查电子邮件中的唯一字段,还会检查角色。

所以我可以让 MyAwesomeEmail@email.com 分别担任卖方和买方的角色。但是在 Firebase 中,当我第一次注册为 MyAwesomeEmail@email.com 时,下次我再次注册时,它会说这封电子邮件已经被使用,这是真的,因为我无法添加一些字段来表明这封电子邮件已经被卖家使用角色,但尚未用于购买者角色。

那么如何解决呢?我在firebase上做错了吗?还是 firebase,因为它的简单性不像构建我们自己的后端那样提供灵活性?

【问题讨论】:

    标签: firebase flutter firebase-authentication


    【解决方案1】:

    Firebase 身份验证仅处理用户的身份验证。使用电子邮件+密码身份验证时,这意味着用户输入了正确的电子邮件和密码组合。

    如果您的应用程序为每个用户分配一个角色,它应该以不需要不同凭据的方式这样做。如果同一个用户可以执行多个角色,您应该构建允许他们在角色选择之外单独输入其凭据的 UI。

    典型的流程可能是:

    Select role -> Enter email -+-> Enter password
                                |
                                +-> Enter registration details
    

    因此,在输入他们的电子邮件地址后,您会检查该电子邮件地址是否已在该角色中注册。如果是这样,请询问他们的密码。如果没有,您要求他们输入该角色的注册详细信息。

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 2020-07-14
      • 2018-07-12
      相关资源
      最近更新 更多