如何根据数据库用户 id(不是 uid)设置 firebase 规则
Posted
技术标签:
【中文标题】如何根据数据库用户 id(不是 uid)设置 firebase 规则【英文标题】:How to set firebase rules based on database user id (not uid) 【发布时间】:2015-08-26 07:00:26 【问题描述】:您好,我的 fb 数据库中有一个用户列表。成功注册后会自动生成用户 ID,每个用户条目都有姓名、电子邮件和 uid。此外,这些属性中的每一个都在 /index 中建立索引,以便我可以根据用户的 uid 轻松查找用户的 id。
根据文档,firebase 说要使用 write: $user_id === auth.uid
如何使用生成的 ID 而不是 uid 完成此操作?
这里是 Facebook 数据库:https://medviz.firebaseio.com/
【问题讨论】:
【参考方案1】:在你的用户对象中会有这样的用户
users :
user1234abc:
name: "abc"
,
user2434dbcc:
name: "abc"
用户对象中有很多unique key/user nodes
,例如user1234abc
、user2434dbcc
该唯一键可以在规则中命名为任何variable
,无需将其命名为$user_id
,您可以将其命名为任何您想要的名称,例如您可以将变量命名为$any_variable
,以获得唯一的用户键
每当用户成功验证相同的唯一 ID 时,在 auth.id 中 auth.uid
所以当你编辑与该用户相关的信息时,你可以在 auth.uid
的任何地方进行数学运算
例如,如果auth.uid
包含user1234abc
并且如果user1234abc
正在编辑此对象user1234abc:name: "abc"
则根据.write 规则,他将能够
查看下面的更新视图
更新的视觉层次结构:
--schema--
users :
________________
|
user1234abc: |
name: "abc" |
, |
user2434dbcc: |
name: "abc" |
|
key can be name as any variable in rules
|
-- rules--
|
|
"rules": |
"users": |
".read": true, |
________________|___________
| |
\|/ |
"$any_variable": \|/
".write": "$any_variable === auth.uid"
【讨论】:
@FrankvanPuffelen 这只是一个例子,我知道它有些可疑;) @FrankvanPuffelen 如果是关于箭头的,你就去吧:P ***.com/questions/27637609/… 我试图称赞您使用图表来解释技术概念。对不起,如果我觉得我很刻薄。 @FrankvanPuffelen 是的,我明白了,不过有点晚了 ;) 谢谢 :) 谢谢,@A.B 请纠正我,但 auth.uid 会是 Firebase 为新用户生成的内容吗?如果是这样,我将如何让我的唯一用户的表 ID(ala,-Jdfsdj34h3kjasfh)成为允许的权限?以上是关于如何根据数据库用户 id(不是 uid)设置 firebase 规则的主要内容,如果未能解决你的问题,请参考以下文章
对于与用户 uid 相同的文档 ID,如何从 Firestore 中仅检索一个用户的数据?