【发布时间】:2016-10-15 16:26:50
【问题描述】:
我正在尝试使用 Firebase 实现以下行为:
- 用户使用 Firebase 身份验证登录
- 用户将文件上传到 Firebase 存储
- 用户输入其他用户的电子邮件地址。此用户帐户可能已经存在。如果没有,收件人会收到一封电子邮件,提示他们注册。
- 上传的文件现在应该仅供上传文件的用户(读/写)和使用上述电子邮件地址的其他用户使用(只读)。
这是我迄今为止一直在尝试的:
- 使用 FirebaseAuth 注册后,我将用户的电子邮件地址和
uid存储在实时数据库中。 - 在用户上传文件并输入收件人的电子邮件地址后,我会在实时数据库中检查该地址。如果存在,我会检索收件人的
uid并将其存储在文件的元数据中。 - 在我的 Firebase 存储安全规则中,我检查
auth.uid是否与存储在文件元数据中的uid匹配。
这应该很好用,但是如果用户帐户还不存在怎么办?
我可以在用户输入收件人的电子邮件地址后创建一个新帐户。如果我这样做,我必须指定一个密码。我可以指定一个随机密码并使用密码重置电子邮件,但这不是一个好的用户体验,还因为您无法完全自定义重置电子邮件。
如果我不立即创建新帐户,如何确保只有拥有此电子邮件地址的用户才能访问该文件?将电子邮件地址存储在文件的元数据中不起作用,因为它以后可能会更改。
我觉得我在这里想得太复杂了。有没有更简单的方法来实现这一点,还是我忽略了什么?
编辑:我进行了更多调查,我认为一种方法是使用自定义身份验证令牌,这是 Firebase 存储指南 here 所建议的。不过,这需要我设置自己的身份验证服务器,这首先违背了使用 Firebase 身份验证的目的。有没有更简单的方法来实现这一点?
【问题讨论】:
-
你将这些文件上传到什么地方?
-
@FrankvanPuffelen Firebase Storage,我已经更新了问题以澄清。
标签: firebase firebase-realtime-database firebase-authentication firebase-storage