angularjs - 如何存储要使用 Firebase 简单登录电子邮件/密码进行身份验证的用户?

标签 angularjs firebase angularfire

当遇到以下情况时,我的选择是什么:

  1. (现有)管理员用户通过我的网络应用创建了一个newUser
  2. newUser 通过 FirebaseSimpleLogin 电子邮件/密码进行身份验证
  3. 如何关联通过 auth 返回的用户数据对象存储在/users/{{newUserId}}newUser数据?

现在我认为最简单的方法是使用用户的电子邮件作为唯一 key ,如下所示:

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

但这并不像我希望的那样可扩展,因为用户随后将被禁止更改其电子邮件或将多个电子邮件与其帐户关联。

还有别的办法吗?

编辑:在 Firebase 数组键不能包含特殊字符之后意识到,但原则仍然适用:清理电子邮件(例如 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4a3f392f380a2d272b232664292527" rel="noreferrer noopener nofollow">[email protected]</a> --> user-gmail-com ),然后将其用作关键。

最佳答案

https://www.firebase.com/docs/security/simple-login-email-password.html ,身份验证后的 auth token 负载包括一个唯一的数字 ID (id) 和一个包含该数字 ID 但保证在 Firebase 简单登录提供程序中唯一的 ID (uid)。使用这两个 ID 之一存储用户数据将使您能够处理对用户电子邮件的更改(即将推出简单登录)或手动链接多个帐户凭据,而不会出现任何电子邮件地址的粗糙转义。

关于angularjs - 如何存储要使用 Firebase 简单登录电子邮件/密码进行身份验证的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22209158/

相关文章:

javascript - AngularJs 模板未在 Internet Explorer 8 中加载

javascript - 如何重构这个要排序的对象表?

java - Android firebase 最喜欢的按钮更改

javascript - 如何避免可观察的 Angular 延迟或确保仅当可观察准备好时才调用我的函数

javascript - 使用 angularjs 在 firebase 中存储评论

javascript - 未捕获( promise ): FirebaseError

javascript - 使用 Angular UI 路由器 $stateProvider 在状态上声明主 Controller

javascript - url-to-image 渲染我尝试的每个 URL,除了我需要的 URL

android - flutter 和 Firebase : Execution failed for task ':firebase_auth:compileDebugJavaWithJavac'

javascript - user_id 将在 firebase 云函数中未定义