9

我的 Angular 应用程序有一个用户处理页面,超级用户(管理员)应该能够编辑用户数据。不允许他添加新用户(他们有一个注册页面,他们可以在其中选择自己的秘密密码),但他应该能够(根据我的逻辑)删除用户......

这是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:如果您想发表评论作为答案,我很乐意接受...

4

1 回答 1

3

我建议您不要直接删除用户帐户,而是通过将仅限管理员的元数据写入用户帐户来简单地禁用该帐户,但是这些记录会存储在您的 Firebase 中并进行结构化。

然后,您可以针对此“锁定”/“禁用”标志使用安全规则,并获得您所追求的功能,而无需存储用户密码。

于 2014-10-06T04:34:49.273 回答