【问题标题】:Role-based authentication with Firebase使用 Firebase 进行基于角色的身份验证
【发布时间】:2016-09-19 10:25:40
【问题描述】:

我是 Firebase 的新手,我正在尝试创建用户身份验证。用户对象具有:用户名、电子邮件、全名、角色、密码。

现在我希望能够创建具有这些属性的用户并使用用户名/电子邮件和密码进行身份验证。

身份验证后,我想检查用户的角色以确定允许他们访问我的应用程序的哪个部分。

我不知道该怎么做,文档大多只处理电子邮件和密码。

【问题讨论】:

标签: android firebase firebase-authentication firebase-security


【解决方案1】:

Firebase 目前只支持邮箱+密码认证,不支持用户名+密码。 (当然还有 Facebook、Twitter、匿名等。)不过,您仍然可以进行自己的自定义身份验证。

您仍然可以使用您提到的那些字段在数据库中创建自己的用户对象:(用户名、电子邮件、全名、角色、密码),但这些与 firebase 的身份验证部分是分开的。这个过程,我称之为“注册”,这取决于你来实现。

如果您想控制不同用户可以访问数据库的哪些部分,那么您就是在谈论database rules。

如果您想控制对应用程序本身不同部分的访问,那么您只需按这种方式编写代码。

【讨论】:

    【解决方案2】:

    您可以像这样构建您的数据库,以使用他们的$uid 存储每个用户的信息,并保留每个用户声明的用户名列表,这样您就可以有一个写入规则来防止覆盖usernames 中已经存在的用户名。

    所以在注册时,您需要使用FIRAuth 使用电子邮件和密码进行注册,然后在完成后,您将获得FIRUser。然后,您可以使用uid 将用户名、角色等写入数据库"users/$uid": {"username": "callam", ...} 中的用户位置以及用户名位置"usernames/$username": "$uid" 中的用户名。

    您需要为"users/$uid" 和"usernames/$username" 实施写入/验证规则,以确保用户名尚未被使用。

    {
        "users": {
            $uid: {
                "username": "callam",
                ...
                "role": "member"
            }
        },
        "usernames": {
            "callam": $uid
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-19
      • 1970-01-01
      • 2020-08-17
      • 2020-07-14
      • 2018-07-12
      • 2021-09-28
      • 2019-04-23
      • 2016-01-03
      • 2011-05-17
      相关资源
      最近更新 更多