应用程序管理员如何在不知道密码的情况下删除Firebase简单登录用户?

时间:2014-10-03 13:46:08

标签: firebase firebasesimplelogin

我的角度应用程序运行用户处理页面,超级用户(管理员)应该能够编辑用户数据。他不允许添加新用户(他们有一个注册页面,他们选择自己的密码),但他应该能够(根据我的逻辑) 删除 < / strong>用户......

这是removeUser() firebase-simple-login API文档页面,这是同一页面中的一个用法示例:

auth.removeUser(email, password, function(error) {
  if (error === null) {
    console.log("User removed successfully");
  } else {
    console.log("Error removing user:", error);
  }
});

因此,应用程序应该知道密码...我在注册时是否应该在用户的数据中保存用户密码?

但是这样我就失去了firebase-simple-login的主要优势(避免在本地存储私有/敏感数据)......

请在任何......中解释我的错误。

更新: 感谢Rob DiMarco的评论,我现在明白了这个问题的理由:removeUser()被设计为用户自己使用后再次提供密码...如果管理员需要删除一个帐户,他/她应该在本地用户的元数据上设置一些“已删除”标志,并在firebase上保持该帐户不变。如果用户决定重新激活同一帐户,软件应该只删除“已删除”标记,并使用新用户提供的用户名/密码执行标准auth.login() ...

更新2 : 这种方法唯一的小问题(如果是一个问题)是想要恢复“已删除”帐户的用户必须记住旧密码,因为我们没有删除firebase-simple-login帐户...但是,她总是可以在“登录”表单中重置她的密码(如果她是电子邮件帐户的真正所有者......)。

@Rob DiMarco:如果你想发表你的评论作为答案,我很乐意接受它......

1 个答案:

答案 0 :(得分:3)

我建议采用一种方法,通过将管理员元数据写入用户帐户来简单地禁用帐户,而不是直接删除用户帐户,但这些记录会在您的Firebase中存储和构建

然后你可以使用安全规则对付这个被锁定的&#39; /&#39;禁用&#39;标记,并获得您需要的功能,而无需存储用户密码。