【发布时间】:2018-04-28 04:00:33
【问题描述】:
我正在使用 Firebase 的新 Firestore 数据库,想知道是否有更有效的方法来强制执行唯一用户名(或唯一子节点)。
我使用电子邮件/密码验证,但允许用户创建一个独特的句柄,例如 Twitter。
使用实时数据库,我能够通过事务和多节点结构来实现这一点。
-users
-uid1234:
-username: ryan
-usernames:
-ryan: uid1234
我在想,如果没有额外的 usernames 节点,使用文档作为 Firestore 中的用户名,也许可以做到这一点。
【问题讨论】:
-
请问为什么是“唯一用户名”?您希望在哪些可能的用途中避免两个用户同名?恕我直言,用户标识应使用用户 ID 而不是用户名。
-
对不起,如果问题不清楚。我仍然想使用身份验证时生成的 Firebase userId,但希望用户能够创建一个独特的“句柄”,如 Twitter 或 Instagram。
-
真正的问题是:如何仅使用服务器端规则强制执行唯一用户名。如果存在用户名映射,则签入客户端是不安全的。如果您已经有解决方案,您介意发布吗?
-
@crazypeter 可以使用实时数据库中的事务在客户端执行此操作:firebase.google.com/docs/database/ios/…。那里有一些 SO 答案更详细地显示了这一点。我正在 Firestore 数据库中寻找一种更简洁的方式(没有额外的“用户名节点”)。
标签: firebase google-cloud-firestore