gpt4 book ai didi

firebase - Firebase "Rules Are Not Filters"约束的解决方法

转载 作者:行者123 更新时间:2023-12-02 15:26:03 26 4
gpt4 key购买 nike

我想要一个安全规则,让任何人都可以获取用户列表并读取他们的姓名,但只允许登录的用户查看自己的电子邮件。

这是一个示例数据结构:

    "User" : {
"abc123" : {
"name" : "Bob",
"email" : "bob@hotmail.com"
}
}

安全规则的一种简单方法可能是执行以下操作:

"User" : {
"$user" : {
"name" : {
".read" : true
},
"email" : {
".read” : "auth.uid === $user"
}
}
}

但是,由于用户级别没有读取规则,因此读取列表的请求将被拒绝。但在用户级别添加读取规则将覆盖电子邮件规则,并使每个子节点都可读(请参阅 Firebase 安全指南中的 Rules Cascade)。

安全指南确实指出 Rules Are Not Filters ,但没有提供太多关于如何处理的指导。

我应该将我的用户实体分为 PrivateUser 和 PublicUser 吗?

最佳答案

让任何人都能获得用户列表并读取他们的名字。并允许登录用户查看自己的电子邮件。

Zac says: first think about access, and then to model objects that are either completely public or completely private.

类型 1:

{"rules":{
"user_publicly":{"$user:{
".read":true,
"name":{}
}},
"user_privately":{"$user:{
".read":"auth != null && $user == auth.uid",
"email":{}
}}
}}

类型 2:

{"rules":{
"user":{"$user:{
"public":{
".read":true,
"name":{}
},
"private":{
".read":"auth != null && $user == auth.uid",
"email":{}
}
}}
}}

关于firebase - Firebase "Rules Are Not Filters"约束的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com