我正在尝试以编程方式从我的firebase中删除用户。 removeuser方法有2个参数,电子邮件和密码。现在电子邮件不难发现,因为它存储在auth变量中+我在创建用户时将其添加到我的数据库中。但是,我应该如何找出用户的密码?
当我创建用户时,我会将生成的md5_hash信息与此用户一起添加到我的数据库中。但是,我无法将此值转换回真实密码。
我显然也不想将真实密码存储在数据库中,因为这只是问题。
所以我想知道,有什么东西过于明显我在这里错过了如何用他的密码以编程方式从数据库中删除用户? (为什么我甚至需要他的密码来删除他?)
编辑:为了澄清,我只允许管理员删除用户,因此他有一个已在我的firebase中创建的每个用户的列表。让用户删除自己的用户帐户仍然不是那么容易,因为(我认为)firebase哈希算法不公开,所以我无法检查他是否输入了正确的密码。
答案 0 :(得分:3)
Firebase简单登录是一种建立在Firebase Custom Login之上的服务,它提供了有用的原语,可以通过常用方式对用户进行身份验证。
按照设计,Firebase Simple Login不允许您以编程方式访问用户的密码,因为它只会增加不安全处理或存储密码的风险。今天,可用于删除电子邮件/密码哈希映射的唯一两种方法是使用电子邮件和密码通过客户端API,或通过https://<YOUR-FIREBASE>.firebaseio.com
的管理面板。
请注意,使用电子邮件/密码登录时,Firebase简单登录只会在电子邮件地址和密码哈希之间创建新映射,但不会在Firebase中存储任何信息。另请注意,无法将用户ID“列入黑名单”,因此如果删除映射,用户可以重新创建它。
如果您想禁止/阻止用户,更好的方法是在“黑名单”用户的Firebase中创建新列表,然后使用安全规则确保该用户在列表中(即用户被阻止)如果root.child('blocked-users').hasChild(auth.uid)
)。