如何使用Firebase简单登录电子邮件/密码存储用户身份?

时间:2014-03-05 21:01:38

标签: angularjs firebase angularfire

对于以下情况,我有哪些选择:

  1. (现有)管理员用户通过我的网络应用
  2. 创建 newUser
  3. newUser 通过FirebaseSimpleLogin电子邮件/密码进行身份验证
  4. 如何将通过auth对象返回的用户数据与/users/{{newUserId}}中存储的 newUser 数据相关联?
  5. 现在我认为最简单的方法是使用用户的电子邮件作为唯一键,如下所示:

    function createUser(newUserInfo){
        firebaseRef.$child('users/' + customerUserInfo.email).$set(newUserInfo);
    }
    function firebaseSimpleLoginSuccess(auth){
        var userInfo = firebaseRef.$child('users/' + auth.user.email);
    }
    

    但这并不像我想的那样具有可扩展性,因为不允许用户更改他们的电子邮件,或者将多个电子邮件与他们的帐户相关联。

    还有其他办法吗?

    编辑:事实上firebase数组键不能包含特殊字符,但原则仍然适用:清理电子邮件(例如user@gmail.com - > user-gmail-com),然后将其用作关键。

1 个答案:

答案 0 :(得分:3)

每{{}}},身份验证后的auth令牌有效负载包含唯一的数字ID(id)和包含该数字ID的ID,但保证在Firebase简单登录中是唯一的提供者(uid)。使用这两个ID中的一个来存储用户数据将使您能够处理用户电子邮件的更改(即将进入简单登录)或手动链接多个帐户凭据,而无需任何粗略的电子邮件地址转发。