从 Firebase 身份验证中删除用户

Posted

技术标签:

【中文标题】从 Firebase 身份验证中删除用户【英文标题】:Remove user from Firebase Auth 【发布时间】:2021-02-28 01:34:41 【问题描述】:

我正在使用来自 firebase 的电子邮件/密码身份验证来管理对我的 Angular 应用程序的身份验证。我创建了一个管理面板来管理基于 CRUD 的用户来控制应用程序上的用户。

到目前为止,我已经设法创建新用户并使用他们的 localID 来在实时数据库中存储有关该用户的其他信息,例如姓名、年龄等

我遇到的问题是在查看 firebase auth api (https://firebase.google.com/docs/reference/rest/auth#section-create-email-password) 的文档时,它指的是使用当前用户登录时创建的 IdToken。我希望能够编辑/删除与当前登录的用户不同的用户,但我在文档中找不到与此相关的任何内容?

如果我在错误的地方寻找任何帮助,或者如果不可能的话,任何解决方法都非常感谢?

【问题讨论】:

【参考方案1】:

从客户端删除与当前登录用户不同的用户似乎是不可能的。不然会不会很危险?

你可以做什么:

创建一个可从客户端调用的云函数, 在这个函数中,检查权限, 然后使用 admin SDK 删除用户
exports.deleteUser = functions.https.onCall(async (data, context) => 
  const uidToDelete = data.uidToDelete;
  const uid = context.auth.uid;

  if(!canDelete(uid, uidToDelete))
    return "forbidden";  

  await admin.auth().deleteUser(uidToDelete);

  return "done";
);

这在guides 和reference 中有描述。

【讨论】:

耻辱,不明白他们为什么无法实施一种方法来执行此操作,因为将登录的受信任用户将管理该帐户。还是谢谢 要强制只有受信任的用户才能删除其他用户,我们需要一种检查权限的方法,可以使用功能代码,也可以使用专门针对此用例的身份验证的安全规则。您更喜欢编写安全规则而不是函数吗? 我可以尝试使用 SDK,但之前没有任何使用经验。遗憾的是 REST api 只有一半的功能,尽管我使用 firebase auth 来控制访问

以上是关于从 Firebase 身份验证中删除用户的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript 从 Firebase 电话身份验证中删除验证码?

Firebase 身份验证获取已删除的用户

Flutter Firebase - 未能正确删除经过 Google 身份验证的用户

Firebase 身份验证:如何验证用户仍然存在

如何在 Flutter 手机身份验证中删除验证码

Firebase 身份验证会话未过期 [重复]